Mysql慢查询定位和优化实践分享
调优目标:提高io的利用率,减少无谓的io能力浪费。
1、打开慢查询日志定位慢sql:
my.cnf:
slow_query_log
slow_query_log_file=mysql.slow
long_query_time=2(超过2s的sql会记录下来)
cacti监控工具
sed -n '/ 2017-04-08 20:50:37 /,/end/p' mysql.slow>slow.log
mysqldumpslow -s t -t slow.log
2、sql调优方法:
(1)not in子查询优化
尽量避免子查询select * from a where id not in(select id from b);
select * from a where not exists(select id from b WHERE id ='100')
建议使用表连接:
select * from a left join b on a.id=b.id WHERE b.id='100'
测试如下:第三张图效率最高
<1>吞吐量197
<2>吞吐量211
<3>吞吐量305