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 ...
随机推荐
- QT Graphics-View 3D编程例子- 3D Model Viewer
学习在Graphics-View框架中使用opengl进行3D编程,在网上找了一个不错的例子“3D Model Viewer”,很值得学习. 可以在http://www.oyonale.com/acc ...
- [Node.js] 05 - Modules and Function
一个 Node.js 文件就是一个模块,这个文件可能是JavaScript 代码.JSON 或者编译过的C/C++ 扩展. 模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的. No ...
- Collections.synchronizedMap()与ConcurrentHashMap的区别
前面文章提到Collections.synchronizedMap()与ConcurrentHashM两者都提供了线程同步的功能.那两者的区别在哪呢?我们们先来看到代码例子. 下面代码实现一个线 ...
- 【Docker】容器操作(转)
来自:https://www.cnblogs.com/zydev/p/5803461.html 列出主机上的容器 列出正在运行的容器: docker ps 列出所有容器: docker ps - ...
- 采用镜像的方法安装python第三方库
转自:https://blog.csdn.net/s740556472/article/details/68557330 pip install --index https://pypi.mirror ...
- PullToRefreshListView 应用讲解
转载于http://blog.csdn.net/mmjiajia132/article/details/40397813 PullToRefreshListView 用法和ListView 没有什么区 ...
- git rebase 操作撤销
git rebase可以更改提交历史,在不影响别人的情况下,能够重整git树. 但如果git rebase操作失误,却在push后才发现,怎么撤销rebase操作呢? 使用git reflog + g ...
- 8月10日CSS总结
1.三角形光标转换 CSS: .one{ width: 0; height: 0; border-top: 100px solid #000; border-right:100px solid t ...
- js对象属性两种调用bug
jsobj.url_3[0]=url_3[1];这就错误jsobj.url_3[0]红色看成一个整体的0的属性,这就错了 TypeError: Cannot set property '0' of u ...
- db2 表空间扩容
DB2表空间扩容 1 - Detect what tablespace has size issues db2 list tablespaces show detail 2 - Check the p ...