1、Mysql计划任务
CREATE EVENT pro_work_report_day ON SCHEDULE EVERY 1 DAY STARTS '2014-10-13 23:00:00' ON COMPLETION NOT PRESERVE ENABLE DO
CALL pro_work_report_day (
DATE_ADD(CURDATE(), INTERVAL 0 MINUTE),
DATE_ADD(
CURDATE(),
INTERVAL 1439 MINUTE
)
);
on completion preserve ,当event到期了,event会被disable,但是该event还是会存在
on completion not preserve,当event到期的时候,该event会被自动删除掉.
重复的计划任务
EVERY 时间(单位)的数量 时间单位 [STARTS 时戳][ENDS 时戳]
在两种计划任务中,时戳可以是任意的TIMESTAMP 和DATETIME 数据类型,要求提供的是将来的时间(大于CURRENT_TIMESTAMP),而且小于Unix时间的最后时间(等于或小于'2037-12-31 23:59:59')
时间单位是关键词:YEAR,MONTH,DAY,HOUR,MINUTE 或者SECOND
EVERY 时间(单位)的数量 时间单位 [STARTS 时戳][ENDS 时戳]
在两种计划任务中,时戳可以是任意的TIMESTAMP 和DATETIME 数据类型,要求提供的是将来的时间(大于CURRENT_TIMESTAMP),而且小于Unix时间的最后时间(等于或小于'2037-12-31 23:59:59')
时间单位是关键词:YEAR,MONTH,DAY,HOUR,MINUTE 或者SECOND
ENABLE 开启事件 DESABLE 关闭事件
2、mysql的调优
show global status like '%Created_tmp_disk_tables%';
show global status like '%Created_tmp_tables%';
这两个查询结果的比例小于5%,才算是正常
show status like 'table_locks%';
查看当前表被锁的状态
show processlist;
查看表进程
show variables like '%tmp_table_size%';
查询数据库中指定参数
3、常见问题
coping to temp table 创建临时表
mysql会在一下情况下创建临时表:
1、查询中包含排序语句,例如order by,group by;
2、如果使用了distinct语句;可以使用explain对sql进行分析,如果返回的结果中包含Using temporary,则表示使用了临时表(内存中)
,这个临时表的大小由参数tmp_table_size决定,
事实上
max_heap_table_size
也会对实际的
临时表的大小有影响,实际值会取这2个参数中最小的那个。可以通过
set global tmp_table_size=209715200 (200M) 这个命令来改变size大小(设置完成后需要退出在查看方知参数是否被修改了show variables like '%table%';)。
如果需要的的临时表大小超过了tmp_table_size,则写到硬盘上的"
on-disk
MyISAM
table"上,这个时候IO速率就会很高了。
下列情况就会导致mysql使用硬盘进行读写表:
1、表的字段类型中包含blob、text;
2、出现在group by 、distinct条件中的列的大小超过512byte;
3、如果使用union或者union all查询,并且在select的结果中显示的列的大小查过512byte;