北京SEO

mysql定时任务 Event Scheduler用法详解

2019/10/10/17:35:39  阅读:1777  来源:谷歌SEO算法  标签: SEO知识

Event Scheduler是mysql新出的一个事件,他查一个计划任务类的功能,我们可以通过在mysql中创建event来定时执行一些sql语句,这个我们就完全不需要像以前一样来利用系统的计划任务来执行定时任务了.

1.开启

全局变量event_scheduler用来设定是否服务器端运行执行计划任务,该变量有如下三种值:

OFF:计划任务处于停止状态,event scheduler线程没有运行,是event_scheduler的默认值,执行一下任意一条命令关闭,代码如下:

  1. SETGLOBALevent_scheduler=OFF;
  2. SET@@global.event_scheduler=OFF;
  3. SETGLOBALevent_scheduler=0;
  4. SET@@global.event_scheduler=0;

ON:计划任务处于运行状态,event scheduler线程启动,并执行所有的计划任务,执行一下任意一条命令开启,代码如下:

  1. SETGLOBALevent_scheduler=ON;
  2. SET@@global.event_scheduler=ON;
  3. SETGLOBALevent_scheduler=1;
  4. SET@@global.event_scheduler=1;

DISABLED:该值将致使计划任务不可运行,运行MySql服务时候加上参数,代码如下:

--event-scheduler=DISABLED

或者在my.cnf 中设置,查看源代码打印帮助.

1 event_scheduler=DISABLED

MySQL的Event Scheduler是根据预先安排的计划进行数据库操作的数据库对象,可以看作是一种“时间触发器”。Event实际上是被一个特殊的event scheduler线程执行的,假如它正在运行的话,可以通过SHOW PROCESSLIST命令看到它。

2.创建

创建的基本语法是,代码如下:

  1. CREATEEVENT(1)
  2. [IFNOTEXISTS](2)
  3. event_name(3)
  4. ONSCHEDULEschedule(4)
  5. [ONCOMPLETION[NOT]PRESERVE](5)
  6. [ENABLE|DISABLE](6)
  7. [COMMENT'comment'](7)
  8. DOsql_statement(8)

逐条介绍:

(1)创建Event嘛,这俩关键字当然不能少了

(2)如果不存在同名的数据库对象才创建

(3)计划任务的名字,作为数据库对象,都有一个本库内唯一的名字做标识

(4)计划任务的计划,重点就在这儿,有两个关键字来设定任务的执行计划:AT和EVERY:AT指定的是一个一次性计划,后面跟着一个时间戳,后续的sql语句将在指定的时间被执行一次.

EVERY指定的是一个周期性计划,在该子句中可以指定从某时间点到某时间点期间,每隔某周期就执行一次该任务,

(5)任务整个执行完毕后,该计划任务对象是否还在数据库中保留,默认不保留.

(6)有效或失效,默认有效.

(7)真正要执行的语句.

3.示例

1.每10秒钟向myschema.mytable表中插入时间戳,代码如下:

CREATE EVENT e_store_ts ON SCHEDULE EVERY 10 SECOND DO INSERT INTO myschema.mytable VALUES (UNIX_TIMESTAMP());

2.在2008-02-06 23:59:00开始的一年内,每隔1小时就删除掉messages表的早先的10条记录,代码如下:

  1. CREATEEVENTe_hourly
  2. ONSCHEDULE
  3. EVERY1HOURSTARTS’2007-02-1023:59:00′ENDS’2008-02-1023:59:00′--phpfensi.com
  4. DO
  5. DELETEFROMmessageslimit10;

4.查看EVENT,代码如下:

  1. mysql>SELECT*FROMINFORMATION_SCHEMA.EVENTS
  2. >WHEREEVENT_NAME='e_store_ts'
  3. >ANDEVENT_SCHEMA='myschema'G
  4. ***************************1.row***************************
  5. EVENT_CATALOG:NULL
  6. EVENT_SCHEMA:myschema
  7. EVENT_NAME:e_store_ts
  8. DEFINER:jon@ghidora
  9. EVENT_BODY:SQL
  10. EVENT_DEFINITION:INSERTINTOmyschema.mytableVALUES(UNIX_TIMESTAMP())
  11. EVENT_TYPE:RECURRING
  12. EXECUTE_AT:NULL
  13. INTERVAL_VALUE:5
  14. INTERVAL_FIELD:SECOND
  15. SQL_MODE:NULL
  16. STARTS:0000-00-0000:00:00
  17. ENDS:0000-00-0000:00:00
  18. STATUS:ENABLED
  19. ON_COMPLETION:NOTPRESERVE
  20. CREATED:2006-02-0922:36:06
  21. LAST_ALTERED:2006-02-0922:36:06
  22. LAST_EXECUTED:NULL
  23. EVENT_COMMENT:
  24. 1rowinset(0.00sec)

5.删除EVENT,代码如下:

  1. DELETEFROMmysql.event
  2. WHEREdb='myschema'
  3. ANDdefiner='jon@ghidora'
  4. ANDname='e_insert';

广告内容

mysql定时任务 Event Scheduler用法详解 mysql定时任务 Event Scheduler用法详解 mysql定时任务 Event Scheduler用法详解

相关阅读

热门评论

Seven 绯闻SEO Seven 绯闻SEO

绯闻SEO,一个专注中小企业网站优化的SEO爱好者

总篇数179

精选文章

RMAN中catalog和nocatalog区别介绍 小技巧:为Linux下的文件分配多个权限 zimbra8.5.1安装第三方签名ssl证书的步骤 解决mysql不能远程连接数据库方法 windows服务器mysql增量备份批处理数据库 mysql中slow query log慢日志查询分析 JavaScript跨域问题总结 Linux下负载均衡软件LVS配置(VS/DR)教程 mysql中权限参数说明 MYSQL(错误1053)无法正常启动

SEO最新算法