詳解 MySQL 的計畫任務

2021-06-20 05:15:10 字數 4469 閱讀 4230

注意:

5.1以後才支援!

讓mysql

定期執行指定的一條命令。功能類似於

crontab

。1、 檢查你的

mysql

是否開了這個功能

show variables like 'event_scheduler';

我執行了一遍發現記錄為空說明我的

mysql

沒有開呢。

ok解決辦法

2、開啟你的

mysql

的計畫任務功能

使用這個功能之前必須確保event_scheduler已開啟,可執行

set global event_scheduler = 1;

或set global event_scheduler = on;

來開啟,也可以直接在啟動命令加上「–event_scheduler=1」,例如:mysqld ... --event_scheduler=1

my.ini or my.cnf 中的

[mysqld]

新增event_scheduler=on

二、建立事件(create event)

先來看一下它的語法:

create event [if not exists] event_name

on schedule schedule

[on completion [not] preserve]

[enable | disable]

[comment 'comment']

do sql_statement;

schedule:

at timestamp [+ interval interval]

| every interval [starts timestamp] [ends timestamp]

interval:

quantity

1) 首先來看乙個簡單的例子來演示每秒插入一條記錄到資料表

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;

三、通過設定全域性變數event_scheduler 的值即可動態的控制事件排程器是否啟用。  

檢視是否event_scheduler開啟 mysql> show variables like '%event%'; 

設定開啟 mysql> set global event_scheduler=on; 

四、例子: 

每分鐘插入一條日誌: delimiter // create event `user_log_event` on schedule every 1 minute starts '2010-12-27 00:00:00'  on completion not preserve enable do  begin  insert into log set addtime=now(); end // 

呼叫儲存過程: delimiter // create event `user_log_event` on schedule every 1 day starts '2010-00-00 00:00:00'  on completion not preserve enable do  begin         call user_log_prov(); end

mysql計畫任務

1 檢查你的mysql是否開了這個功能 show variables like event scheduler 我執行了一遍發現記錄為空說明我的mysql沒有開呢。ok解決辦法 2 開啟你的mysql的計畫任務功能 使用這個功能之前必須確保event scheduler已開啟,可執行 set glo...

Ubuntu 計畫任務詳解

一.關於crontab 有些ubuntu 版本,cron是被預設安裝並啟動的。如果沒有啟動,自行設定並啟動 chkconfig sysv rc conf 配置檔案 etc crontab m h dom mon dow user command 17 root cd run parts report...

Linux計畫任務詳解

語法 at option time 常用選項 設定任務執行時間的格式 使用互動式方式建立乙個任務 at ls etc at ctrl d結束輸入 job 8 at sun apr 23 21 53 00 2017 使用指定檔案作為輸入 root localhost at f scripts slee...