mysql 定時任務

2022-07-22 01:45:11 字數 3851 閱讀 8801

mysql 5.1以上支援定時任務。

show variables like 'event_scheduler';   檢查是否已開啟該功能

開啟計畫任務功能:

set global event_scheduler = 1;

或set global event_scheduler = on;

或者my.ini or my.cnf 中的

[mysqld]

新增 event_scheduler=on

先來看一下它的語法:

create event [if not exists] event_name

on scheduleschedule

[on completion [not] preserve]

[enable | disable]

[comment 'comment']

do sql_statement;

schedule:

at timestamp [+ interval interval]

| every interval [starts timestamp] [ends timestamp]

interval:

quantity

#單次計畫任務:at 時戳desable 關閉事件

5.comment 注釋 

6.do sql_statement 執行的sql語句

use test;

create table aaa (timeline timestamp);

create event e_test_insert

on schedule every 1 second 

do insert into test.aaa values (current_timestamp);

等待3秒鐘後,再執行查詢看看:

mysql> select * from aaa;

+---------------------+ 

| timeline            | 

+---------------------+ 

| 2007-07-18 20:44:26 | 

| 2007-07-18 20:44:27 | 

| 2007-07-18 20:44:28 | 

+---------------------+

2) 5天後清空test表:

create event e_test

on schedule at current_timestamp + interval 5 day

do truncate table test.aaa;

3) 2023年7月20日12點整清空test表:

create event e_test

on schedule at timestamp '2007-07-20 12:00:00'

do truncate table test.aaa;

4) 每天定時清空test表:

create event e_test

on schedule every 1 day

do truncate table test.aaa;

5) 5天後開啟每天定時清空test表:

create event e_test

on schedule every 1 day

starts current_timestamp + interval 5 day

do truncate table test.aaa;

6) 每天定時清空test表,5天後停止執行:

create event e_test

on schedule every 1 day

ends current_timestamp + interval 5 day

do truncate table test.aaa;

7) 5天後開啟每天定時清空test表,乙個月後停止執行:

create event e_test

on schedule every 1 day

starts current_timestamp + interval 5 day

ends current_timestamp + interval 1 month

do truncate table test.aaa;

[on completion [not] preserve]可以設定這個事件是執行一次還是持久執行,預設為not preserve。

8) 每天定時清空test表(只執行一次,任務完成後就終止該事件):

create event e_test

on schedule every 1 day

on completion not preserve

do truncate table test.aaa;

[enable | disable]可是設定該事件建立後狀態是否開啟或關閉,預設為enable。

[comment 『comment』]可以給該事件加上注釋。

三、修改事件(alter event)

alter event event_name

[on schedule schedule]

[rename to new_event_name]

[on completion [not] preserve]

[comment 'comment']

[enable | disable]

[do sql_statement]

1) 臨時關閉事件

alter event e_test disable;

2) 開啟事件

alter event e_test enable;

3) 將每天清空test表改為5天清空一次:

alter event e_test

on schedule every 5 day;

四、刪除事件(drop event)

語 法很簡單,如下所示:

drop event [if exists] event_name

例如刪除前面建立的e_test事件

drop event e_test;

當然前提是這個事件存在,否則會產生error 1513 (hy000): unknown event錯誤,因此最好加上if exists

drop event if exists e_test;

create event test

on schedule at '2007-09-01 12:00:00' + interval 1 day

on completion not preserve 

do insert into yyy values('hhh','uuu');

解釋:從2007-09-01開始,每天對錶yyy在12:00:00進行乙個插入操作。而且只執行一次(on completion not preserve )

我的計畫任務為:

create event sysplan

on schedule at '2010-05-22 23:00:00' + interval 1 day

on completion not preserve 

do truncate table bjproj.ae_tmp;

壓力測試資料生成:沒分鐘插入一條資料

create event add_product on schedule every 1 second  do insert into test.products (`product`,`addtime`) values (rand()*50000+50000,current_timestamp) ;

mysql 定時任務 生效 mysql定時任務

1.檢視是否開啟定時策略 show variables like event sche 若出現如下圖,則此時是關閉狀態 開啟定時策略 重啟無效 set global event scheduler 1 則需要在配置檔案my.ini的設定 重啟有效 mysqld event scheduler on ...

mysql 定時任務

檢視event是否開啟 複製 如下 show variables like sche 將事件計畫開啟 複製 如下 set global event scheduler 1 建立儲存過程test 複製 如下 create procedure test begin update examinfo set...

mysql定時任務

show variables like event scheduler 開啟定時任務 set global event scheduler on 定時更新 on completion not preserve 表示當事件不會再發生的情況下,刪除事件 注意特定時間執行的事件,如果設定了該引數,執行完畢...