mysql 定時指令碼(event),類似oracle的job
1、開啟mysql event(事件)
mysql> show variables like '%event_sch%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | OFF |
+-----------------+-------+
1 row in set (0.00 sec)
開啟event(事件)
vi /etc/my.cnf
[mysql]
event_scheduler=on
重啟資料庫
service mysql restart
mysql> show variables like '%event_sch%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | ON |
+-----------------+-------+
1 row in set (0.00 sec)
2、建立event
DELIMITER $$
CREATE event event_p2
ON SCHEDULE
EVERY 5 MINUTE
STARTS NOW()
DO
BEGIN
CALL p2(160105);
END$$
DELIMITER ;
3、檢視event
mysql> show events\G;
*************************** 1. row ***************************
Db: report
Name: event_p2
Definer: root@localhost
Time zone: SYSTEM
Type: RECURRING
Execute at: NULL
Interval value: 1
Interval field: MINUTE
Starts: 2016-05-10 20:09:50
Ends: NULL
Status: ENABLED
Originator: 1
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: utf8_general_ci
1 row in set (0.00 sec)
mysql> show variables like '%event_sch%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | OFF |
+-----------------+-------+
1 row in set (0.00 sec)
開啟event(事件)
vi /etc/my.cnf
[mysql]
event_scheduler=on
重啟資料庫
service mysql restart
mysql> show variables like '%event_sch%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | ON |
+-----------------+-------+
1 row in set (0.00 sec)
2、建立event
DELIMITER $$
CREATE event event_p2
ON SCHEDULE
EVERY 5 MINUTE
STARTS NOW()
DO
BEGIN
CALL p2(160105);
END$$
DELIMITER ;
3、檢視event
mysql> show events\G;
*************************** 1. row ***************************
Db: report
Name: event_p2
Definer: root@localhost
Time zone: SYSTEM
Type: RECURRING
Execute at: NULL
Interval value: 1
Interval field: MINUTE
Starts: 2016-05-10 20:09:50
Ends: NULL
Status: ENABLED
Originator: 1
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: utf8_general_ci
1 row in set (0.00 sec)
- 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 {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
- WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
- DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
其中,
event_name:定時器名,最大長度64個字元,若未指定,則預設為當前的MySQL使用者名稱(不區分大小寫);
schedule:限定執行時間;
ON COMPLETION [NOT] PRESERVE:表示是否需要迴圈複用這個Event;
sql_statement:要執行的SQL語句(也可以使用儲存過程代替傳統的SQL語句);
comment:對該時間排程器的一個註釋,最大長度64個字元;
【關閉事件】
【刪除事件】
【注意】:要使用定時器,MySQL的常量GLOBAL event_scheduler必須為on或者是1.
【範例】
1. 每天凌晨1點開始執行資料更新:
- CREATE EVENT [IF NOT EXISTS] E_testEvent_1
- ON SCHEDULE EVERY 1 DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 HOUR)
- ON COMPLETION PRESERVE ENABLE
- DO
- BEGIN
- call p2();
-
end ;
2. 每月第一天凌晨1點開始執行資料更新(使用儲存過程):
- CREATE EVENT E_testEvent_2
- ON SCHEDULE EVERY 1 MONTH STARTS DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY), INTERVAL 1 MONTH),INTERVAL 1 HOUR)
- ON COMPLETION PRESERVE ENABLE
- DO
- BEGIN
- CALL p2();
- END
3. 每季度第一天凌晨1點開始執行資料更新:
- CREATE EVENT E_testEvent_3
- ON SCHEDULE EVERY 1 QUARTER STARTS DATE_ADD(DATE_ADD(DATE( CONCAT(YEAR(CURDATE()),'-',ELT(QUARTER(CURDATE()),1,4,7,10),'-',1)),INTERVAL 1 QUARTER),INTERVAL 2 HOUR)
- ON COMPLETION PRESERVE ENABLE
- DO
- UPDATE _T_test SET col= 2 ;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30345407/viewspace-2097000/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql每天定時備份指令碼MySql指令碼
- mysql定時備份shell指令碼MySql指令碼
- mysql定時器event詳解MySql定時器
- ORACLE常用定時備份指令碼Oracle指令碼
- oracle rman 定時備份指令碼Oracle指令碼
- Mysql定時備份資料指令碼MySql指令碼
- MySQL 06 mysql 如何實現類似 oracle 的 merge intoMySqlOracle
- 一個自動生成oracle job的指令碼Oracle指令碼
- MySQL的字首索引及Oracle的類似實現MySql索引Oracle
- Oracle資料庫定時器JobOracle資料庫定時器
- Oracle透過job定時建立表Oracle
- 小程式的wxs指令碼(類似過濾器)指令碼過濾器
- Linux下 MYSQL 定時備分指令碼LinuxMySql指令碼
- MySQL定時器EVENT學習筆記MySql定時器筆記
- Oracle用指令碼定時執行備份Oracle指令碼
- linux mysql定時備份指令碼記錄LinuxMySql指令碼
- 定時ftp指令碼FTP指令碼
- mysql時間指令碼MySql指令碼
- mysql類似merge的操作MySql
- oracle 定義jobOracle
- Mysql event實現定時建表小記MySql
- 使用oracle job定時傳送email郵件OracleAI
- Oracle 定時任務job實際應用Oracle
- Oracle定時任務(DBMS_Job)詳解Oracle
- 自動定時備份 mysql 資料庫 的 shell 指令碼MySql資料庫指令碼
- mysql上排名sql的寫法,類似oracle的rank和denseMySqlOracle
- 在dotnet core實現類似crontab的定時任務
- 定時收集gc事件的指令碼GC事件指令碼
- XXL-JOB定時任務框架(Oracle定製版)框架Oracle
- MySQL中varchar和char定義長度是字元,與Oracle nvarchar2類似MySql字元Oracle
- ElasticSearch類似Mysql的not in 和 in 查詢ElasticsearchMySql
- oracle系統包——dbms_job用法(oracle定時任務)Oracle
- Oracle:建立JOB定時執行儲存過程Oracle儲存過程
- Oracle Job 定時執行設定例項[final]Oracle
- oracle job使用方法--實現定時任務Oracle
- MySQL自動備份指令碼及異地定時FTPMySql指令碼FTP
- oracle,db2,mysql類比之一常用類似知識點OracleDB2MySql
- DBMS_JOB.SUBMIT 建立job定時排程MIT