日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql事件定时_MySQL事件(定时任务)

發布時間:2023/12/3 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql事件定时_MySQL事件(定时任务) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

what's the MySQL 事件

MySQL5.1 版本開始引進 event 概念,MySQL 中的事件(event:時間觸發器)是用于執行定時或周期性的任務,類似 Linux 中的 crontab,事件可以精確到秒。通過單獨或調用存儲過程使用,在某一特定的時間點,觸發相關的 SQL 語句或存儲過程。事件由一個特定的線程來管理的,也就是所謂的事件調度器,但是事件不能直接調用。

總的來說,事件,就是定時任務的管理器。

查看事件調度器是否開啟

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

SHOW VARIABLES LIKE 'event_scheduler';SELECT @@event_scheduler;

SHOW PROCESSLIST;

開啟或關閉事件管理器

--開啟事件調度器

SET GLOBAL event_scheduler = ON;--關閉事件調度器

SET GLOBAL event_scheduler = OFF;--查看事件調度器狀態

SHOW VARIABLES LIKE 'event_scheduler';

注意:如果想要始終開啟事件,那么在使用SET GLOBAL開啟事件后,還需要在配置文件(Windows系統my.ini、Linux系統my.cnf)中添加 event_scheduler=on 并重啟數據庫服務。因為如果沒有添加,MySQL重啟事件后又會回到原來的狀態。

創建存儲過程

MySQL 事件一般配合 MySQL 存儲過程使用,頂一萬 MySQL 存儲過程后由 MySQL 事件進行觸發調用。

事件的主要操作

事件的主要操作有:創建、查詢、修改、刪除、開啟和關閉。

創建事件

語法結構

CREATE

[DEFINER={user | CURRENT_USER}]EVENT[IF NOT EXISTS]event_nameONSCHEDULE schedule[ON COMPLETION [NOT]PRESERVE][ENABLE | DISABLE | DISABLE ON SLAVE]

[COMMENT 'comment']DO event_body;

DEFINER --可選,用于定義事件執行時檢查權限的用戶

IF NOT EXISTS --可選,用于判斷要創建的事件是否存在

EVENT event_name --必選,用于指定事件名,event_name的最大長度為64個字符,如果為指定event_name,則默認為當前的MySQL用戶名(不區分大小寫)

ON SCHEDULE schedule --必選,用于定義執行的時間和時間間隔

ON COMPLETION [NOT] PRESERVE --可選,用于定義事件是否循環執行,即是一次執行還是永久執行,默認為一次執行,即 NOT PRESERVE

ENABLE | DISABLE | DISABLE ON SLAVE --可選,用于指定事件的一種屬性。

--其中,關鍵字ENABLE表示該事件是活動的,也就是調度器檢查事件是否必選調用;

--關鍵字DISABLE表示該事件是關閉的,也就是事件的聲明存儲到目錄中,但是調度器不會檢查它是否應該調用;

--關鍵字DISABLE ON SLAVE表示事件在從機中是關閉的。如果不指定這三個選擇中的任意一個,則在一個事件創建之后,它立即變為活動的。

COMMENT 'comment' --可選,用于定義事件的注釋

DO event_body --必選,用于指定事件啟動時所要執行的代碼。可以是任何有效的SQL語句、存儲過程或者一個計劃執行的事件。如果包含多條語句,可以使用BEGIN...END復合結構

參數說明

示例

create event second_event --創建名為 second_event 的事件,注意此處沒有括號

on schedule every 1 second --創建周期定時的規則,每秒鐘執行一次

on completion preserve disable --創建后并不開始生效

do call test_proce(); --do call test_proce() 是該事件的操作內容,表示調用名為 test_proce() 的存儲過程。

執行時間相關的例子

on schedule every 1 second --每秒執行1次

on schedule every 2 minute --每兩分鐘執行1次

on schedule every 3 day --每3天執行1次

ON schedule every 1 day starts date_add(date_add_curdate(), interval 1 day), interval 1 hour) --每天凌晨1點執行

ON schedule every 1 month starts date_add(date_add(date_sub(curdatte(),interval day(curdate())-1 day),interval 1 month),interval 1 hour) --每個月的第一天凌晨1點執行

on schedule at current_timestamp()+interval 5 day --5天后執行

on schedule at current_timestamp()+interval 10 minute --10分鐘后執行

on schedule at '2016-10-01 21:50:00' --在2016年10月1日,晚上9點50執行

ON SCHEDULE EVERY 3 MONTH STARTS CURRENT_TIMESTAMP + 1 WEEK --每 3 個月,從現在起一周后開始

ON SCHEDULE EVERY 12 HOUR STARTS CURRENT_TIMESTAMP + INTERVAL 30 MINUTE ENDS CURRENT_TIMESTAMP + INTERVAL 4 WEEK --每十二個小時,從現在起三十分鐘后開始,并于現在起四個星期后結束

on schedule every 1 day starts current_timestamp()+interval 5 day ends current_timestamp()+interval 1 month --5天后開始每天都執行執行到下個月底

on schedule every 1 day ends current_timestamp()+interval 5 day --從現在起每天執行,執行5天

有關執行時間需要注意的點

在 event 事件中:ON SCHEDULE 計劃任務,有兩種設定計劃任務的方式:

(1)AT 時間戳,用來完成單次的計劃任務。時間戳可以是任意的TIMESTAMP 和DATETIME 數據類型,時間戳需要大于當前時間

(2)EVERY 時間(單位)的數量實踐單位[STARTS 時間戳] [ENDS時間戳],用來完成重復的計劃任務。可以是任意非空(Not Null)的整數式,時間單位是關鍵詞:YEAR,MONTH,DAY,HOUR,MINUTE 或者 SECOND。

提示: 其他的時間單位也是合法的如:QUARTER, WEEK, YEAR_MONTH,DAY_HOUR,DAY_MINUTE,DAY_SECOND,HOUR_MINUTE,HOUR_SECOND, MINUTE_SECOND,不建議使用這些不標準的時間單位。

[ON COMPLETION [NOT] PRESERVE]:ON COMPLETION參數表示"當這個事件不會再發生的時候",即當單次計劃任務執行完畢后或當重復性的計劃任務執行到了ENDS階段。而PRESERVE的作用是使事件在執行完畢后不會被Drop掉,建議使用該參數,以便于查看EVENT具體信息。

查看事件

SELECT event_name,event_definition,interval_value,interval_field,status FROM information_schema.EVENTS;

修改事件

語法結構

ALTER EVENT 語句與 CREATE EVENT 語句基本相同。另外 ALTER EVENT 語句還有一個用法就是讓一個事件關閉或再次活動。

ALTER

[DEFINER={user | CURRENT_USER}]EVENT[IF NOT EXISTS]event_nameONSCHEDULE schedule[ON COMPLETION [NOT]PRESERVE][ENABLE | DISABLE | DISABLE ON SLAVE]

[COMMENT 'comment']DO event_body;

刪除事件

DROP EVENT IF EXISTS 事件名;

開啟事件

alter event 事件名 on completion preserve enable; --開啟定時任務

關閉事件

alter event 事件名 on completion preserve disable; --關閉定時任務

總結

以上是生活随笔為你收集整理的mysql事件定时_MySQL事件(定时任务)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。