首页/数据/数据库速查/锁等待排查(sys.innodb_lock_waits)
性能与调优57 条

锁等待排查(sys.innodb_lock_waits)

锁等待诊断三板斧:谁在等(blocked)、谁挡着(blocking)、被什么锁(锁类型+索引);sys 视图已把三表联查封装好。

数据库速查数据更新于 2026-10-12

定位阻塞链

定位阻塞链
SELECT * FROM sys.innodb_lock_waits\G
-- 看 wait_started / waiting_query / blocking_query / blocking_pid
-- 追到阻塞会话:
SELECT THREAD_ID, PROCESSLIST_ID, PROCESSLIST_INFO
FROM performance_schema.threads
WHERE PROCESSLIST_ID = 12345;
-- 处置(评估后):
KILL 12345;
wait_age等多久了(秒)
blocking_query阻塞方正在执行 SQL
决策先联系业务/作者确认,再决定 KILL
KILL 是大事务回滚的开始:回滚可能比执行还久,先看事务写了多少再动手。

易错点

  • 杀了等待方不杀阻塞方:等待方立刻换一批再来等,问题原样存在
  • 生产直接 KILL 大事务:回滚风暴拖慢全库,处置要有评估

数据来源与参考

  • MySQL 8.0 Reference Manual: sys schema innodb_lock_waits
  • MySQL 8.0 Reference Manual: KILL

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌