当数据库表执行写sql存在死锁,或执行读sql存在耗时时,便会导致数据库性能明显下降或不可用。
查询正在执行或排队的sql
SELECT * FROM information_schema.PROCESSLIST
可以查询指定schema和table的正在执行或排队的sql
SELECT * FROM information_schema.PROCESSLIST where DB = '此处替换为schema' and info like '%此处替换为表名%'
寻找罪魁祸首
在上面sql的执行结果中,找到 STATE = ‘executing’ 并且 TIME 字段的值明显很大的行(假设上图 TIME 的值明显很大),
就是造成死锁或耗时的sql信息,记住该行 ID 字段的值, ID = 4793980
KILL耗时SQL的进程
执行以下sql
kill 替换为该行ID字段的值 ;
即
kill 4793980;