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

mysql常用方法搜集 博客分类: 数据库 mysql调优temp tablejob 

程序员文章站 2024-03-18 14:14:10
...
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
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;