MySql常用维护命令6

来源:互联网 发布:网络直播行业自律 编辑:程序博客网 时间:2024/06/06 07:39

内容摘要:

       本篇主要是对项目运行过程中会产生的一些数据维护,更新,参数设置等常用操作的记录和总结,方面在运用是有个参考。主要内容会涉及可参考目录简介。本编包含第6章节。

目录简介:

1.     数据库启停及状态检查

2.     CREATE 操作项目

3.     ALTER 操作项目

4.     数据库参数查看和设置

5.     客户端权限管理

6.     事件调度/临时触发器/定制任务

7.     触发器、存储过程

标签:

       MySql,Create,Alter,Show Parameter,Event,Trigger,Procedure,Privilige

6.  事件调度/临时触发器/定制任务

       有时我们需要完成一些定时任务或周期性的任务触发,比如用户表中状态字段定时刷新。在mysql中有Event_Scheduler可以完成实现,中文名称可以叫做计划任务、事件调度,这个是在5.1版本之后才引入的新功能。定时性操作可以不再依赖外部程序,而直接使用数据库本身提供的功能。要是用该功能,可以通过如下基本步骤。

1.     检查是否开启事件调度,是event_scheduler参数控制.如下示例,具体方法可以参考第4节介绍内容。

         mysql>SHOW VARIABLES LIKE ‘event_scheduler’;

              +-----------------+-------+

      | Variable_name   | Value |

              +-----------------+-------+

             | event_scheduler | OFF   |

             +-----------------+-------+

2.     若为OFF表示未打开,可以通过

         mysql>SET GLOBAL event_scheduler = 1;(参考第4节内容)

3.     创建事件(CREATE EVENT)

参考如下语法:

CREATE EVENT [IF NOT EXISTS] event_name

ON SCHEDULE schedule

[ON COMPLETION [NOT] PRESERVE]

[ENABLE | DISABLE]

[COMMENT 'comment']

DO sql_statement;

 

schedule:

AT TIMESTAMP [+ INTERVAL INTERVAL]

| EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]

 

INTERVAL:

quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |

        WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |           DAY_SECOND|HOUR_MINUTE|HOUR_SECOND|MINUTE_SECOND}

 

语法说明:

1.     大写内容是创建event的关键字

2.     []括起来的内容是可选项,|分隔的是对应的选项,使用时选择其中之一

3.     小写内容是自定义部分,如计划的名称、计划实施时间周期。

4.     ON SCHEDULE 计划任务,有两种设定计划任务的方式:

1. AT 时间戳,用来完成单次的计划任务。

2. EVERY 时间(单位)的数量时间单位[STARTS 时间戳] [ENDS时间戳],用来完成重复的计划任务。

在两种计划任务中,时间戳可以是任意的TIMESTAMP 和DATETIME 数据类型,时间戳需要大于当前时间。

在重复的计划任务中,时间(单位)的数量可以是任意非空(Not Null)的整数式,时间单位是关键词:YEAR,MONTH,DAY,HOUR,MINUTE 或者SECOND。

提示: 其他的时间单位也是合法的如:QUARTER, WEEK, YEAR_MONTH,DAY_HOUR,DAY_MINUTE,DAY_SECOND,HOUR_MINUTE,HOUR_SECOND, MINUTE_SECOND,不建议使用这些不标准的时间单位。

5.     ON COMPLETION参数表示"当这个事件不会再发生的时候",即当单次计划任务执行完毕后或当重复性的计划任务执行到了ENDS阶段。而PRESERVE的作用是使事件在执行完毕后不会被Drop掉,建议使用该参数,以便于查看EVENT具体信息。

6.     参数Enable和Disable表示设定事件的状态。Enable表示系统将执行这个事件。Disable表示系统不执行该事件。

7.     注释会出现在元数据中,它存储在information_schema表的COMMENT列,最大长度为64个字节。'comment'表示将注释内容放在单引号之间,建议使用注释以表达更全面的信息。

8.     DO sql_statement字段表示该event需要执行的SQL语句或存储过程。这里的SQL语句可以是复合语句,例如:

BEGIN

CREATE TABLE test1;//创建表(需要测试一下)

DROP TABLE test2;//删除表

CALL proc_test1();//调用存储过程

END

建议 sql_statement尽量使用简单语句,有复杂的逻辑可以配合存储过程一起使用。

4.     示例介绍

4.1每隔一秒自动调用e_procedure()存储过程

CREATE EVENT IF NOT EXISTS e_test

ON SCHEDULE EVERY 1 SECOND

ON COMPLETION PRESERVE

DO CALL e_ procedure ();

              4.2 每天定时清空test库中的test表

                     CREATE EVENT e_truncate_test_table

ON SCHEDULE EVERY 1 DAY

DO TRUNCATE TABLE test. test;

              4.3 5天后开启每天定时清空test库中的test表,一个月后停止执行

                     CREATE EVENT e_truncate_test_table

ON SCHEDULE EVERY 1 DAY

STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY

ENDS CURRENT_TIMESTAMP + INTERVAL 1 MONTH

DO TRUNCATE TABLE test.test;

5.     修改事件(ALTER EVENT)

语法类似创建:

ALTER EVENT event_name

[ON SCHEDULE schedule]

[RENAME TO new_event_name]

[ON COMPLETION [NOT] PRESERVE]

[COMMENT 'comment']

[ENABLE | DISABLE]

[DO sql_statement]

5.1 临时关闭事件

ALTER EVENT e_eventname DISABLE;

5.2 开启事件

ALTER EVENT e_eventname ENABLE;

5.3将任务执行周期每天改为7天执行一次

ALTER EVENT e_ eventname

ON SCHEDULE EVERY 7 DAY;

6.     删除事件(DROP EVENT)

DROP EVENT [IF EXISTS] event_name

注:对于event对象同样可以在mysql.event和information_schema.events中通过select语句查询出来已经建立的event。或者在mysql命令行中执行SHOW EVENTS查看。
0 0
原创粉丝点击