mysql job

1.存儲過程
create procedure feifei
 (  
 a int,  
 b int  
 )  
begin
declare c int;
set c = a + b;  
select c as sum; 
end;

call feifei(1,2);

drop procedure if exists feifei; 


CREATE TABLE `timetocid` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `cid` int(11) DEFAULT NULL,
  `optime` date DEFAULT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2.job
一、創建計劃任務:
語法:
CREATE
[DEFINER = { user | CURRENT_USER }]   #計劃任務的所有者,一般省略,則爲創建者;
#否則需要有相關權限,則可以指定其它用戶
    EVENT                                                   #計劃任務關鍵字
    [IF NOT EXISTS]                     #如果不存在則創建,可以省略;否則如果存在,則報錯
    event_name                                           #計劃任務名稱
    ON SCHEDULE schedule             #調度計劃,如每20分鐘,在幾點開始等,參考下面的schedule詳解
[ON COMPLETION [NOT] PRESERVE]    #對於執行一次的任務,默認執行完則刪除.加此,
#可控制任務結束後計劃任務是否刪除或保留
[ENABLE | DISABLE | SLAVESIDE_DISABLED]      #指示創建的計劃任務是否創建即有效(有
#效則立即執行一次),或禁止執行
    [COMMENT 'comment']                    #關於計劃任務的註釋,可放入任務的功能簡潔
    DO sql_statement;                #任務體,可以是單條語句,也可以是以BEGIN/END包裹的符合語句
 
schedule:                    
AT timestamp [+ INTERVAL interval] #在什麼時候開始運行或某時刻之後interval時間
#在運行,用於運行一次的計劃任務
 | EVERY interval                      #或者簡單的每隔interval時間運行一次
[STARTS timestamp [+ INTERVAL interval]] #STARTS和ENDS配合EVERY關鍵字,
#指定運行時間段,單獨的STARTS指示STARTS以後的時間段
    [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}
              #quantity是具體數字,指示多少年或幾月或幾分鐘等
更改計劃任務
語法:
ALTER EVENT
    [DEFINER = { user | CURRENT_USER }] #更改缺省用戶
    event_name
    [ON SCHEDULE schedule]          #更改調度時間
    [RENAME TO new_event_name]          #計劃任務改名
    [ON COMPLETION [NOT] PRESERVE]      #更改一次運行結束後的行爲
    [ENABLE | DISABLE | SLAVESIDE_DISABLED] #更改計劃任務狀態
    [COMMENT 'comment']               #修改註釋
    [DO sql_statement]                     #修改計劃執行體
 
三、刪除計劃任務
語法:
DROP EVENT [IF EXISTS] event_name
四、開啓MySQL計劃任務功能支持
MySQL中對計劃任務的支持是採用線程調度檢測計劃任務的。要此功能開啓計劃任務纔會執行。查看調度器狀態命令如下:
SHOW [FULL] PROCESSLIST\G
如下是沒有開啓的狀態:
mysql> SHOW FULL PROCESSLIST\G
*************************** 1. row ***************************
     Id: 10
   User: root
   Host: localhost:4823
     db: mysql
Command: Query
   Time: 0
 State: NULL
   Info: SHOW FULL PROCESSLIST
1 row in set (0.00 sec)
 
通過如下全局配置的設置來開啓或關閉調度器:
SET GLOBAL event_scheduler = ON/OFF/1/0; --開/關
或SET @@global.event_scheduler = ON/OFF/1/0;
 
五、示例如下:
其中計劃任務體內可以是簡單語句,也可以調用存儲過程
 
delimiter //
drop event if exists createmonsterevent//
create event createmonsterevent
 on schedule every 20 minute
 starts CURRENT_TIMESTAMP + INTERVAL 10 minute
    ENABLE
   COMMENT '刷怪計劃任務'
    DO
           begin
                  #20分鐘
                  Call createmonster(date_sub(sysdate(),INTERVAL 24 minute),
date_sub(sysdate(),INTERVAL 2 minute));
           end;
//
 
delimiter ;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章