当前位置: 首页>数据库>正文

把mysqld结束任务了 mysql 任务

MySQL的功能越来越强大了,逐渐在想大型商业数据库靠拢了,这不,5.1的版本已然支持视图、触发器、job等功能。


下面简单介绍下我所使用的MySQL的job功能(也就是计划任务,Oracle中称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 ;

 


https://www.xamrdz.com/database/6wx1942053.html

相关文章: