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的字段都需要添加索引

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值