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

2sql调优方法:

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

cid:image008.jpg@01D2CE30.478B28A0

<2>吞吐量211

cid:image009.jpg@01D2CE30.478B28A0

<3>吞吐量305

cid:image010.jpg@01D2CE30.478B28A0

原文地址:https://www.cnblogs.com/toSeeMyDream/p/6860971.html