一、理论:
1.优势:
1)减少系统管理员的操作风险,有利于数据库整体迁移。因数据库迁移时即可同时迁移调度事件
2.场景:
1)定期收集统计信息
2)清理历史数据
3)数据库检查
3.要点:
1)在性能要求高且重要的数据库中要慎重部署和启用调度器
2)过于复杂的更适合用程序
3)开启和关闭事件调度器需要具有超级用户权限
二、实践:
mysql> use test1;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> create table test(id1 varchar(10),create_time datetime);
Query OK, 0 rows affected (0.02 sec)
mysql> create event test_event_1
-> on schedule
-> every 5 second
-> do
-> insert into test1.test(id1,create_time)
-> values ('test',now());
Query OK, 0 rows affected (0.01 sec)
mysql> show events \G;
*************************** 1. row ***************************
Db: test1
Name: test_event_1
Definer: root@localhost
Time zone: SYSTEM
Type: RECURRING
Execute at: NULL
Interval value: 5
Interval field: SECOND
Starts: 2015-10-14 06:33:17
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.01 sec)
ERROR:
No query specified
mysql> select * from test;
Empty set (0.00 sec)
mysql> show variables like '%scheduler%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | OFF |
+-----------------+-------+
1 row in set (0.00 sec)
mysql> set global event_scheduler = 1 ;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like '%scheduler%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | ON |
+-----------------+-------+
1 row in set (0.00 sec)
mysql> show processlist \G;
*************************** 1. row ***************************
Id: 17
User: root
Host: localhost
db: test1
Command: Sleep
Time: 247901
State:
Info: NULL
*************************** 2. row ***************************
Id: 21
User: root
Host: localhost
db: test1
Command: Query
Time: 0
State: NULL
Info: show processlist
*************************** 3. row ***************************
Id: 22
User: event_scheduler
Host: localhost
db: NULL
Command: Daemon
Time: 1
State: Waiting for next activation
Info: NULL
3 rows in set (0.00 sec)
ERROR:
No query specified
mysql> select * from test;
+------+---------------------+
| id1 | create_time |
+------+---------------------+
| test | 2015-10-14 06:33:57 |
| test | 2015-10-14 06:34:02 |
| test | 2015-10-14 06:34:07 |
| test | 2015-10-14 06:34:12 |
| test | 2015-10-14 06:34:17 |
| test | 2015-10-14 06:34:22 |
+------+---------------------+
6 rows in set (0.00 sec)
mysql> create event trunc_test
-> on schedule every 1 minute
-> do truncate table test;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from test;
+------+---------------------+
| id1 | create_time |
+------+---------------------+
| test | 2015-10-14 06:34:52 |
| test | 2015-10-14 06:34:57 |
| test | 2015-10-14 06:35:02 |
| test | 2015-10-14 06:35:07 |
| test | 2015-10-14 06:35:12 |
| test | 2015-10-14 06:35:17 |
| test | 2015-10-14 06:35:22 |
| test | 2015-10-14 06:35:27 |
| test | 2015-10-14 06:35:32 |
| test | 2015-10-14 06:35:37 |
+------+---------------------+
10 rows in set (0.00 sec)
mysql> select * from test;
+------+---------------------+
| id1 | create_time |
+------+---------------------+
| test | 2015-10-14 06:37:52 |
| test | 2015-10-14 06:37:57 |
+------+---------------------+
2 rows in set (0.00 sec)
mysql> show processlist \G;
*************************** 1. row ***************************
Id: 17
User: root
Host: localhost
db: test1
Command: Sleep
Time: 248177
State:
Info: NULL
*************************** 2. row ***************************
Id: 21
User: root
Host: localhost
db: test1
Command: Query
Time: 0
State: NULL
Info: show processlist
*************************** 3. row ***************************
Id: 22
User: event_scheduler
Host: localhost
db: NULL
Command: Daemon
Time: 2
State: Waiting for next activation
Info: NULL
3 rows in set (0.00 sec)
ERROR:
No query specified
mysql> alter event trunc_test disable;
Query OK, 0 rows affected (0.02 sec)
mysql> select * from test;
+------+---------------------+
| id1 | create_time |
+------+---------------------+
| test | 2015-10-14 06:38:52 |
| test | 2015-10-14 06:38:57 |
| test | 2015-10-14 06:39:02 |
| test | 2015-10-14 06:39:07 |
| test | 2015-10-14 06:39:12 |
| test | 2015-10-14 06:39:17 |
| test | 2015-10-14 06:39:22 |
| test | 2015-10-14 06:39:27 |
| test | 2015-10-14 06:39:32 |
| test | 2015-10-14 06:39:37 |
+------+---------------------+
10 rows in set (0.00 sec)
mysql> select * from test;
+------+---------------------+
| id1 | create_time |
+------+---------------------+
| test | 2015-10-14 06:38:52 |
| test | 2015-10-14 06:38:57 |
| test | 2015-10-14 06:39:02 |
| test | 2015-10-14 06:39:07 |
| test | 2015-10-14 06:39:12 |
| test | 2015-10-14 06:39:17 |
| test | 2015-10-14 06:39:22 |
| test | 2015-10-14 06:39:27 |
| test | 2015-10-14 06:39:32 |
| test | 2015-10-14 06:39:37 |
| test | 2015-10-14 06:39:42 |
| test | 2015-10-14 06:39:47 |
| test | 2015-10-14 06:39:52 |
| test | 2015-10-14 06:39:57 |
| test | 2015-10-14 06:40:02 |
| test | 2015-10-14 06:40:07 |
+------+---------------------+
16 rows in set (0.00 sec)
mysql> alter event test_event_1 disable;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from test;
+------+---------------------+
| id1 | create_time |
+------+---------------------+
| test | 2015-10-14 06:38:52 |
| test | 2015-10-14 06:38:57 |
| test | 2015-10-14 06:39:02 |
| test | 2015-10-14 06:39:07 |
| test | 2015-10-14 06:39:12 |
| test | 2015-10-14 06:39:17 |
| test | 2015-10-14 06:39:22 |
| test | 2015-10-14 06:39:27 |
| test | 2015-10-14 06:39:32 |
| test | 2015-10-14 06:39:37 |
| test | 2015-10-14 06:39:42 |
| test | 2015-10-14 06:39:47 |
| test | 2015-10-14 06:39:52 |
| test | 2015-10-14 06:39:57 |
| test | 2015-10-14 06:40:02 |
| test | 2015-10-14 06:40:07 |
| test | 2015-10-14 06:40:12 |
| test | 2015-10-14 06:40:17 |
| test | 2015-10-14 06:40:22 |
| test | 2015-10-14 06:40:27 |
+------+---------------------+
20 rows in set (0.00 sec)
mysql> drop event test_event_1;
Query OK, 0 rows affected (0.01 sec)
mysql> show events \G;
*************************** 1. row ***************************
Db: test1
Name: trunc_test
Definer: root@localhost
Time zone: SYSTEM
Type: RECURRING
Execute at: NULL
Interval value: 1
Interval field: MINUTE
Starts: 2015-10-14 06:34:48
Ends: NULL
Status: DISABLED
Originator: 1
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: utf8_general_ci
1 row in set (0.00 sec)
ERROR:
No query specified