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 ...
随机推荐
- python模块和类的通用转换规则(2),三步转oo
介绍模块和类怎么互相转换,不谈面向对象的继承 封装 多态等特点. 一个person_module模块,有人的基本属性和功能. person_module.py如下 # coding=utf8 name ...
- supervisor的command执行两条命令
如下supervisor的进程的comand配置参数只能写一个命令 1.要执行多条命令,可以写个sh文件包含多条命令,然后sh -x xxxx.sh,但这样又多了一个文件, 2.把所有命令放在字符 ...
- [AWS] Deploy react project on EC2
如何在aws部署项目 申请到亚马逊AWS免费账户后,我们可以拥有很多的免费云服务产品项目,其中包括: EC2云服务器. Amazon S3存储. Amazon RDS数据库. Amazon Cloud ...
- day_4.28 py
2018-4-28 15:13:39 ''' 在方法名字加入两个 __则为私有方法 类似于private 方法 ''' class Dog: #私有方法 def __send_msg(self): p ...
- 设计模式学习--Prototype
What Prototype:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. Why Prototype适用于在一个类的实例有几种不同的状态组合的一种时,建立相应的数目的原型并克隆她 ...
- Android必学-异步加载+Android自定义View源码【申明:来源于网络】
Android必学-异步加载+Android自定义View源码[申明:来源于网络] 异步加载地址:http://download.csdn.net/detail/u013792369/8867609 ...
- 在Web根目录下建立testdb.php文件内容
apache_2.0.50-win32-x86-no_ssl.msi php-5.0.0-Win32.zipmysql-4.0.20d-win.zipphpMyAdmin-2.5.7.zip 操作系统 ...
- Docker Macvlan网络部署
Macvlan Bridge模式 节点1创建 docker network create -d macvlan --subnet=172.100.1.0/24 --gateway=172.100.1. ...
- DB2创建数据库常用参数详解
转自http://czmmiao.iteye.com/blog/1335801 DB2创建数据库常用参数详解 本文只介绍DB2 create database语法中的常用参数http://publib ...
- [No0000172]Android Studio设置HTTP代理(可用)
android SDK下载:http://www.androiddevtools.cn . 禁止第一次启动 到AS安装目录,打开bin目录,编辑idea.properties, 在文件末尾添加: di ...