您的位置:首页 > 数据库 > MySQL

mysql 学习---->事件调度器

2015-10-15 11:40 561 查看
一、理论:

1.优势:

1)减少系统管理员的操作风险,有利于数据库整体迁移。因数据库迁移时即可同时迁移调度事件

2.场景:

1)定期收集统计信息

2)清理历史数据

3)数据库检查

3.要点:

1)在性能要求高且重要的数据库中要慎重部署和启用调度器

2)过于复杂的更适合用程序

3)开启和关闭事件调度器需要具有超级用户权限

二、实践:

[sql] view
plaincopy

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
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: