mysql 优化 copying to tmp table

mysql性能优化时,发现copying to tmp table on disk占用了很长的执行时间

经过查资料发现mysql可以通过变量tmp_table_size和max_heap_table_size来控制内存表大小上限,如果超过上限会将数据写到磁盘上,从而会有物理磁盘的读写操作,导致影响性能。

我们可以通过调整这两个变量的值来提升性能(当然前提条件是mysql所在服务器有足够的内存)。

首先可以通过下面语句查看当前的变量值:

SHOW VARIABLES LIKE 'max_heap_table_size%';

然后通过SET GLOBAL max_heap_table_size=522715200; 设置变量值为512M,你可以根据自己的情况设置合适的值;tmp_table_size变量的设置方法一样。

######################################

在设置后,效果并不明显,在对查询语句分析的时候

select t.*,r.flow_no from torder t left join  receive r on t.order_no=r.order_no order by t.gmt_modified desc limit 0,10

发现 t表的order_no 添加了索引,r表的order_no没有添加索引,在为r表添加索引后,查询时间瞬间到毫秒级别了,未添加时已经到了10秒以上了

#####

总结

对多表关联的表 ,left ,inner join关联的字段,排序和条件 in的字段都需要添加索引

猜你喜欢

转载自wuhen639.iteye.com/blog/2232590
tmp