解决方式
数据库的某个大表突然无法查询,是因为数据库表中有进程阻塞或死锁了。
根据下列查询语句,查询出超时阻塞的sql进程,kill掉就行了。
-- 1. 查看运行时间最长的进程(特别是UPDATE/DELETE)
SELECT
ID,
USER,
HOST,
DB,
COMMAND,
TIME AS exec_seconds,
STATE,
LEFT(INFO, 200) AS query_snippet,
CONCAT('KILL ', ID, ';') AS kill_command
FROM information_schema.PROCESSLIST
WHERE COMMAND != 'Sleep'
AND TIME > 10 -- 运行超过10秒的
ORDER BY TIME DESC
LIMIT 20;