中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL數據庫中怎么實現定時任務

發布時間:2021-08-04 14:36:00 來源:億速云 閱讀:278 作者:Leah 欄目:數據庫

今天就跟大家聊聊有關MySQL數據庫中怎么實現定時任務,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

一、事件概述

在MySQL 5.1中新增了一個特色功能事件調度器(Event Scheduler),簡稱事件。

事件(event)是MySQL在相應的時刻調用的過程式數據庫對象。一個事件可調用一次,也可周期性的啟動,它由一個特定的線程來管理的,也就是所謂的“事件調度器”。

事件和觸發器類似,都是在某些事情發生的時候啟動。當數據庫上啟動一條語句的時候,觸發器就啟動了,而事件是根據調度事件來啟動的。由于他們彼此相似,所以事件也稱為臨時性觸發器。事件取代了原先只能由操作系統的計劃任務來執行的工作,而且MySQL的事件調度器可以精確到每秒鐘執行一個任務,而操作系統的計劃任務(如:Linux下的CRON或Windows下的任務計劃)只能精確到每分鐘執行一次。

二、事件的優缺點

優點:一些對數據定時性操作不再依賴外部程序,而直接使用數據庫本身提供的功能。可以實現每秒鐘執行一個任務,這在一些對實時性要求較高的環境下就非常實用了。

缺點:定時觸發,不可以調用。

三、事件調度器參數

事件由一個特定的線程來管理。啟用事件調度器后,擁有SUPER權限的賬戶執行SHOW PROCESSLIST就可以看到這個線程了。

--查看事件是否開啟。SHOW VARIABLES LIKE 'event_scheduler';SELECT @@event_scheduler;--全局開啟事件調度器SET GLOBAL event_scheduler = ON;--全局關閉事件調度器SET GLOBAL event_scheduler = OFF;--永久開啟事件調度器(在my.cnf配置文件中添加)#事件調度器啟動狀態event_scheduler = on

四、創建事件

一條create  event語句創建一個事件。每個事件由兩個主要部分組成,第一部分是事件調度(eventschedule,表示事件何時啟動以及按什么頻率啟動;

第二部分是事件動作(event  action),這是事件啟動時執行的代碼,事件的動作包含一條SQL語句,它可能是一個簡單地insert或者update語句,也可以使一個存儲過程或者

benin...end語句塊,這兩種情況允許我們執行多條SQL。

一個事件可以是活動(打開)的或停止(關閉)的,活動意味著事件調度器檢查事件動作是否必須調用,停止意味著事件的聲明存儲在目錄中,但調度器不會檢查它是否應該調用。在一個事件創建之后,它立即變為活動的,一個活動的事件可以執行一次或者多次。

相關語法:

CREATE  [DEFINER = { user | CURRENT_USER }]   EVENT   [IF NOT EXISTS]   event_name   ON SCHEDULE schedule   [ON COMPLETION [NOT] PRESERVE]   [ENABLE | DISABLE | DISABLE ON SLAVE]   [COMMENT 'comment']   DO event_body;    schedule:   AT timestamp [+ INTERVAL interval] ...  | EVERY interval   [STARTS timestamp [+ INTERVAL interval] ...]   [ENDS timestamp [+ INTERVAL interval] ...]    interval:   quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |        WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |        DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}

說明:

MySQL數據庫中怎么實現定時任務

MySQL數據庫中怎么實現定時任務

五、事件(定時任務)管理

1. 查詢事件

在MySQL中可以通過查詢information_schema.events表,查看已創建的事件。

--查看當前所在庫的事件show events;--查看所有事件SELECT * FROM information_schema.events;

2. 修改事件

事件被創建之后,還可以使用ALTER EVENT語句修改其定義和相關屬性

ALTER[DEFINER={user | CURRENT_USER}]EVENT [IF NOT EXISTS] event_nameON SCHEDULE schedule[ON COMPLETION [NOT] PRESERVE][ENABLE | DISABLE | DISABLE ON SLAVE][COMMENT 'comment']DO event_body;

3. 啟動與關閉事件

ALTER EVENT語句可以讓一個事件關閉或再次活動。

--啟動事件。ALTER EVENT event_name ENABLE;--關閉事件。ALTER EVENT event_name DISABLE;

4. 刪除事件

刪除已經創建的事件可以使用DROP EVENT語句來實現。

DROP EVENT IF EXISTS event_name;

六、實例演示

1. 事件+sql

創建名稱為event_t1的事件,用于每隔5秒鐘向數據表t1(用戶信息表)中插入一條數據。

-- 創建用戶信息表CREATE TABLE IF NOT EXISTS t1( id INT AUTO_INCREMENT PRIMARY KEY COMMENT '用戶編號', name VARCHAR(30) NOT NULL COMMENT '用戶姓名', create_time TIMESTAMP COMMENT '創建時間') COMMENT = '用戶信息表';-- 創建事件CREATE EVENT IF NOT EXISTS event_t1ON SCHEDULE EVERY 5 SECONDON COMPLETION PRESERVECOMMENT '新增用戶信息定時任務'DO INSERT INTO t1(name,create_time) VALUES('hwb',NOW());

MySQL數據庫中怎么實現定時任務

2. 事件+存儲過程

--創建總表CREATE TABLE IF NOT EXISTS t_total( userNumber INT  COMMENT '用戶數', createtime TIMESTAMP COMMENT '創建時間') COMMENT = '總表';--創建名稱為t_total的存儲過程,用于統計前面表插入的數量CREATE PROCEDURE t_total()BEGIN DECLARE n_total INT default 0; SELECT COUNT(*) INTO n_total FROM t1; INSERT INTO t_total (userNumber,createtime) VALUES(n_total,NOW());END;--創建名稱為event_total的事件,用于在每天12點調用存儲過程。CREATE EVENT IF NOT EXISTS event_totalON SCHEDULE EVERY 1 DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 12 HOUR)ON COMPLETION PRESERVE ENABLEDO CALL t_total();

MySQL數據庫中怎么實現定時任務

看完上述內容,你們對MySQL數據庫中怎么實現定時任務有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

蛟河市| 武冈市| 拉萨市| 沭阳县| 内丘县| 新乐市| 搜索| 云龙县| 万州区| 澄城县| 镇赉县| 崇仁县| 祥云县| 烟台市| 唐山市| 舒城县| 金山区| 吉水县| 额济纳旗| 锦屏县| 边坝县| 苏尼特右旗| 福鼎市| 历史| 博客| 读书| 永兴县| 樟树市| 织金县| 丹凤县| 永顺县| 敦煌市| 柘荣县| 隆安县| 浮梁县| 芦山县| 馆陶县| 拜城县| 屏山县| 历史| 池州市|