記錄一下,以後遇到了補充實例。
場景
突然某條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詳解