欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

mysql学习记录(十一)--事件调度器_MySQL

程序员文章站 2022-04-16 19:00:14
...
一、理论:

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
相关标签: 事件