记录一下,以后遇到了补充实例。
场景
突然某条sql很慢
分析
1.是不是锁表
2.表数据量是不是很大了
3.explain分析sql(索引方面)
问题排查及解决
1、查询是否锁表 show OPEN TABLES where In_use > 0;
2、查询进程
show processlist
补充:要杀死进程调用: kill id
3、查看正在锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
4、查看等待锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
5.锁没有问题,数据量也没有到分库分表数量级的,接下来用explain分析sql本身,看是不是没有用到索引等等。
explain参考:MySQL Explain详解