mysql之event
mysql之event
http://blog.csdn.net/lxgwm2008/article/details/9088521
Mysql事件调度器(Event Scheduler)类似于定时器,可以在某一个时间点执行一个SQL语句或一个语句块(BEGIN ... END);或者每隔固定间隔重复执行。类似于Linux下的crontab,或Windows下的Task Scheduler。
- mysql> show processlist;
- +-----+-----------------+-----------+------+---------+------+-----------------------------------+------------------+
- | Id | User | Host | db | Command | Time | State | Info |
- +-----+-----------------+-----------+------+---------+------+-----------------------------------+------------------+
- | 1 | system user | | | Daemon | 0 | Waiting for event from ndbcluster | NULL |
- | 3 | root | localhost | test | Query | 0 | NULL | show processlist |
- | 203 | event_scheduler | localhost | NULL | Daemon | 2 | Waiting for next activation | NULL |
- +-----+-----------------+-----------+------+---------+------+-----------------------------------+------------------+
- 3 rows in set (0.00 sec)
- set global event_scheduler = on
- set @@global.event_scheduler = on
- set global event_scheduler = 1
- set @@global.event_scheduler = 1
- SET GLOBAL event_scheduler = OFF
- SET @@global.event_scheduler = OFF
- SET GLOBAL event_scheduler = 0
- SET @@global.event_scheduler = 0
- mysql< SET @@event_scheduler = OFF;
- ERROR 1229 (HY000): Variable 'event_scheduler' is a GLOBAL variable and should be set with SET GLOBAL
- mysql> select * from mysql.event \G
- *************************** 1. row ***************************
- db: test
- name: evt_insert
- body: insert into account values(NULL, 100.00)
- definer: root@localhost
- execute_at: NULL
- interval_value: 10
- interval_field: SECOND
- created: 2013-06-13 14:07:54
- modified: 2013-06-13 14:07:54
- last_executed: 2013-06-13 19:29:44
- starts: 2013-06-13 18:07:54
- ends: NULL
- status: ENABLED
- on_completion: DROP
- sql_mode:
- comment:
- originator: 1
- time_zone: SYSTEM
- character_set_client: utf8
- collation_connection: utf8_general_ci
- db_collation: utf8_general_ci
- body_utf8: insert into account values(NULL, 100.00)
- 1 row in set (0.01 sec)
- mysql> select * from information_schema.events \G
- *************************** 1. row ***************************
- EVENT_CATALOG: def
- EVENT_SCHEMA: test
- EVENT_NAME: evt_insert
- DEFINER: root@localhost
- TIME_ZONE: SYSTEM
- EVENT_BODY: SQL
- EVENT_DEFINITION: insert into account values(NULL, 100.00)
- EVENT_TYPE: RECURRING
- EXECUTE_AT: NULL
- INTERVAL_VALUE: 10
- INTERVAL_FIELD: SECOND
- SQL_MODE:
- STARTS: 2013-06-13 14:07:54
- ENDS: NULL
- STATUS: ENABLED
- ON_COMPLETION: NOT PRESERVE
- CREATED: 2013-06-13 14:07:54
- LAST_ALTERED: 2013-06-13 14:07:54
- LAST_EXECUTED: 2013-06-13 15:30:14
- EVENT_COMMENT:
- ORIGINATOR: 1
- CHARACTER_SET_CLIENT: utf8
- COLLATION_CONNECTION: utf8_general_ci
- DATABASE_COLLATION: utf8_general_ci
- 1 row in set (0.01 sec)
- mysql> show create event evt_insert \G
- *************************** 1. row ***************************
- Event: evt_insert
- sql_mode:
- time_zone: SYSTEM
- Create Event: CREATE DEFINER=`root`@`localhost` EVENT `evt_insert` ON SCHEDULE EVERY 10 SECOND STARTS '2013-06-13 14:07:54' ON COMPLETION NOT PRESERVE ENABLE DO insert into account values(NULL, 100.00)
- character_set_client: utf8
- collation_connection: utf8_general_ci
- Database Collation: utf8_general_ci
- 1 row in set (0.00 sec)
- mysql> show events \G
- *************************** 1. row ***************************
- Db: test
- Name: evt_insert
- Definer: root@localhost
- Time zone: SYSTEM
- Type: RECURRING
- Execute at: NULL
- Interval value: 10
- Interval field: SECOND
- Starts: 2013-06-13 14:07:54
- 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)
ERROR 1144 (42000): Illegal GRANT/REVOKE command; please consult the manual to see which privileges can be used
- mysql> SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME='e_store_ts' AND EVENT_SCHEMA='myschema'\G
- *************************** 1. row ***************************
- EVENT_CATALOG: NULL
- EVENT_SCHEMA: myschema
- EVENT_NAME: e_store_ts
- DEFINER: jon@ghidora
- EVENT_BODY: SQL
- EVENT_DEFINITION: INSERT INTO myschema.mytable VALUES (UNIX_TIMESTAMP())
- EVENT_TYPE: RECURRING
- EXECUTE_AT: NULL
- INTERVAL_VALUE: 5
- INTERVAL_FIELD: SECOND
- SQL_MODE: NULL
- STARTS: 0000-00-00 00:00:00
- ENDS: 0000-00-00 00:00:00
- STATUS: ENABLED
- ON_COMPLETION: NOT PRESERVE
- CREATED: 2006-02-09 22:36:06
- LAST_ALTERED: 2006-02-09 22:36:06
- LAST_EXECUTED: NULL
- EVENT_COMMENT:
- 1 row in set (0.00 sec)
- SHOW STATUS LIKE '%event%';
- mysql> show status like '%event%';
- +--------------------------------------+-------+
- | Variable_name | Value |
- +--------------------------------------+-------+
- | Com_alter_event | 0 |
- | Com_create_event | 1 |
- | Com_drop_event | 0 |
- | Com_show_binlog_events | 0 |
- | Com_show_create_event | 2 |
- | Com_show_events | 3 |
- | Com_show_relaylog_events | 0 |
- | Ndb_api_event_data_count_injector | 1 |
- | Ndb_api_event_nondata_count_injector | 0 |
- | Ndb_api_event_bytes_count_injector | 204 |
- | Ndb_api_event_data_count | 1 |
- | Ndb_api_event_nondata_count | 0 |
- | Ndb_api_event_bytes_count | 204 |
- +--------------------------------------+-------+
- 13 rows in set (0.00 sec)
- CREATE
- [DEFINER = { user | CURRENT_USER }]
- EVENT
- [IF NOT EXISTS]
- event_name
- ON SCHEDULE schedule
- [ON COMPLETION [NOT] PRESERVE]
- [ENABLE | DISABLE | DISABLE ON SLAVE]
- [COMMENT 'comment']
- DO event_body;
- schedule:
- AT timestamp [+ INTERVAL interval] ...
- | EVERY interval
- [STARTS timestamp [+ INTERVAL interval] ...]
- [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}
- create event evt_insert
- on schedule every 10 second
- do update myschema.mytable set mycol = mycol + 1;
- mysql> SELECT NOW();
- +---------------------+
- | NOW() |
- +---------------------+
- | 2006-02-10 23:59:01 |
- +---------------------+
- 1 row in set (0.04 sec)
- mysql > CREATE EVENT e_totals
- -> ON SCHEDULE AT '2006-02-10 23:59:00'
- -> DO INSERT INTO test.totals VALUES (NOW());
- Query OK, 0 rows affected, 1 warning (0.00 sec)
- mysql > SHOW WARNINGS\G
- *************************** 1. row ***************************
- Level: Note
- Code: 1588
- Message: Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was dropped immediately after creation.
- delimiter //
- CREATE EVENT e
- ON SCHEDULE
- EVERY 5 SECOND
- DO
- BEGIN
- DECLARE v INTEGER;
- DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END;
- SET v = 0;
- WHILE v < 5 DO
- INSERT INTO t1 VALUES (0);
- UPDATE t2 SET s1 = s1 + 1;
- SET v = v + 1;
- END WHILE;
- END //
- delimiter ;
- CREATE EVENT e_call_myproc
- ON SCHEDULE
- AT CURRENT_TIMESTAMP + INTERVAL 1 DAY
- DO CALL myproc(5, 27);
- ALTER
- [DEFINER = { user | CURRENT_USER }]
- EVENT event_name
- [ON SCHEDULE schedule]
- [ON COMPLETION [NOT] PRESERVE]
- [RENAME TO new_event_name]
- [ENABLE | DISABLE | DISABLE ON SLAVE]
- [COMMENT 'comment']
- [DO event_body]
- ALTER EVENT OLDDB.MYEVENT RENAME TO NEWDB.MYEVENT;
- DROP EVENT [IF EXISTS] event_name
该语句删除一个定义的事件
mysql之event的更多相关文章
- MySQL 定时器EVENT学习
原文:http://blog.csdn.net/lifuxiangcaohui/article/details/6583535 MySQL 定时器EVENT学习 MySQL从5.1开始支持event功 ...
- Mysql使用event,类似oracle job
MySQL从5.1开始支持event功能,类似oracle的job功能.有了这个功能之后我们就可以让MySQL自动的执行数据汇总等功能,不用像以前需要操作的支持了.如linux crontab功能. ...
- Mysql中event事件的入门
Mysql中event事件的入门 主要涉及的知识点:mysql的存储过程.mysql的event事件调度. 参考资料: Qiao_Zhi的博客:[周期性执行事件]MySQL事件(Event)& ...
- Mysql的Event
Mysql的Event Event简介 Event是mysql中的一个事件,和触发器类似,触发器是在某条sql语句执行后可能会触发,而Event是每隔一段时间或某个特定的时间点执行,可以精确到秒. 准 ...
- MySQL定时任务event,储存过程(定时删除指定时间前90天指定表的数据)
MySQL定时任务event,储存过程(定时删除指定时间前90天指定表的数据) 分类: MySql5.x2014-06-23 15:16 1266人阅读 评论(0) 收藏 举报 mysql数据库 &l ...
- mysql中event的用法详解
一.基本概念mysql5.1版本开始引进event概念.event既“时间触发器”,与triggers的事件触发不同,event类似与linux crontab计划任务,用于时间触发.通过单独或调用存 ...
- 【MySQL】Event事件与游标
MySQL的事件就像Linux系统上的定时任务,按照设置的时间或者间隔时间执行设置好的任务. 如果用SQLyog一类的写存储过程.触发器或者事件会省事一些,例如SQLyog就会生成一个大致的模板: D ...
- MySQL数据库 Event 定时执行任务.
一.背景 由于项目的业务是不断往前跑的,所以难免数据库的表的量会越来越庞大,不断的挤占硬盘空间.即使再大的空间也支撑不起业务的增长,所以定期删除不必要的数据是很有必要的.在我们项目中由于不清理数据,一 ...
- mysql的event(事件)用法详解
SELECT * FROM mysql.event;SET GLOBAL event_scheduler = 1; -- 开启定时器 0:off 1:on SHOW VARIABLES LIKE 'e ...
随机推荐
- nginx 反向代理 Nginx 502 Bad Gateway
查看错误日志: 摘要: nginx反向代理出现502错误 通过查看日志发现错误信息 2018/01/10 17:58:20 [crit] 8156#0: *1 connect() to 127.0.0 ...
- [Object Tracking] Overview of algorithms for Object Tracking
From: https://www.zhihu.com/question/26493945 可以载入史册的知乎贴 目标跟踪之NIUBILITY的相关滤波 - 专注于分享目标跟踪中非常高效快速的相关滤波 ...
- iOS SQLite 数据库迁移
本文转载至 http://www.jianshu.com/p/c19dd08697bd 最近不得不考虑关于数据库迁移的问题,原先用了种很不好的处理方式(每次版本升级就删除本地数据库,太傻),于是开始考 ...
- [转]Mariadb的root密码忘记后的解决方法
环境背景:CentOS 7.2 一.编辑/usr/lib/systemd/system/mariadb.service 文件,在Service段中添加 1 2 3 4 5 6 7 8 9 10 ...
- iOS-Core Animation: 变换
仿射变换 用 CGPoint 的每一列和 CGAffineTransform 矩阵的每一行对应元素相乘再求 和,就形成了一个新的 CGPoint 类型的结果.要解释一下图中显示的灰色元素, 为了能让矩 ...
- MSI/MSI-X Capability结构 (转)
http://blog.sina.com.cn/s/blog_6472c4cc0102dskj.html
- 质量团队在VUCA时代如何走?
如今,VUCA时代已到来.在VUCA时代(易变性volatility.不确定性uncertainty.复杂性complexity.模糊性ambiguity),面对外部环境的复杂和不确定性,测试圈是否已 ...
- VS没办法调试,直接退出,报错:1. 使用调试生成配置或禁用调试选项“启用‘仅我的代码’”。。。
打开一个Demo,结果没办法调试,运行出错,直接退出了, 明明加了断点的. 输出→调试→提示信息如下 . 使用调试生成配置或禁用调试选项“启用‘仅我的代码’”. . 检查调试选项下的“符号”设置.线程 ...
- Codeforces 44E - Anfisa the Monkey - [水题]
题目链接:http://codeforces.com/problemset/problem/44/E 题意: 给一个字符串,让你分割成 $k$ 行,每行的字母数在 $[a,b]$ 之间. 题解: 这是 ...
- [No0000B6]C#中 ==与equals的区别
using System; internal class Person { public Person(string name) { Name = name; } public string Name ...