应先用SHOW FULL PROCESSLIST识别真正持有锁的线程,再执行KILL CONNECTION id终止;避免仅按Time排序误杀等待者,需结合State、Command和完整SQL判断阻塞源头。
能直接 kill,但必须先准确识别出真正阻塞别人的那个线程,而不是只看 time 值大的。
单纯按
排序杀掉耗时最长的 SQL,经常误杀无辜——它可能只是在等锁,自己没在执行,却把真正持有锁的源头漏掉了。
如何用
找到真凶,不是替罪羊
阻塞链里,通常有「等待者」和「持有者」两类线程。只查
默认输出,容易只看到一堆
或
的等待者,却找不到谁在 hold lock。
必须加
:运行
,否则
列会被截断,看不到完整 SQL,无法判断是否是 DDL、大事务或隐式锁操作
重点看
列:出现
、
、
的线程,大概率是等待者;而
或
且
持续上涨的,更可能是持有锁正在执行的源头
结合
列:
表示正在执行 SQL;
但
很大,说明事务没提交,锁还挂着——这种最危险,常被忽略
别只盯
:它的
是线程空闲/执行总秒数,不区分状态;而
+
(MySQL 8.0+)才能看到谁持有什么锁,但日常应急还是
最快
kill 命令的两种写法,效果完全不同
不是只有
一种用法。用错类型,可能什么都没终止,或者中断了不该中断的操作。
MySQL(Linux)
MySQL 9.6.0是面向Linux平台的2026年创新版本,核心架构迎来重大革新。其将外键约束与级联操作从InnoDB引擎层上移至SQL层,确保所有数据变更均被完整记录至Binlog,彻底解决了CDC(变更数据捕获)与主从复制中的数据不一致难题。此外,该版本引入container_aware启动选项以原生适配容器环境,并对审计日志进行了组件化重构,为追求极致数据一致性与云原生体验的开发者提供了全新选择。
下载
(即
):强制断开客户端连接,会回滚当前事务,释放所有锁。这是最常用、最安全的杀法
:只终止当前正在执行的语句,但连接保持,事务不回滚。如果该线程处于事务中且已修改数据,
后它可能立刻重试原 SQL 或卡在下一行,锁依然存在
不要用
或操作系统级
:MySQL 进程本身不能这么杀,会导致实例崩溃或数据不一致
权限要求:执行
需要有
或
权限(MySQL 8.0.12+),普通应用账号默认没有
批量杀慢查询前,务必加过滤条件
线上环境一执行
就全量杀,极大概率引发雪崩。慢 ≠ 该杀,更不等于可以一起杀。
加
:排除
线程,避免误杀长事务未提交的连接(它们
大但未必在“执行”)
加
:过滤掉空
的线程(比如某些监控探活连接),防止
报错
慎用正则匹配:如
或
,注意大小写和空格,
中的 SQL 是原始输入,可能含换行或注释
生产建议:先用
生成 kill 语句,人工 review 后再执行;或用
工具替代,它支持
和
等精细控制
真正难的不是执行
,而是从几十上百个线程里,在 30 秒内分辨出哪个是锁源头、哪个是连锁等待、哪个只是刚连上来还没干活的假慢。多看几遍
输出,比背命令重要得多;而每次
前确认
和
内容,比记住语法关键得多。
timeshow processlistshow processlistState: Waiting for table metadata lockWaiting for lockFULLshow full processlistInfoStateLockedWaiting for table metadata lockWaiting for row lockState: Sending dataupdatingTimeCommandCommand: QueryCommand: SleepTimeinformation_schema.processlistTIMEperformance_schema.threadsperformance_schema.data_locksshow full processlistKILLKILL 123KILL 123KILL CONNECTION 123KILL QUERY 123KILL QUERYKILL -9kill -9KILLSUPERCONNECTION_ADMINSELECT ID FROM information_schema.processlist WHERE TIME > 60COMMAND = 'Query'SleepTimeINFO IS NOT NULLInfoKILLUnknown thread idINFO LIKE '%DELETE%'INFO REGEXP '^(INSERT|UPDATE)'SHOW FULL PROCESSLISTSELECT CONCAT('KILL ',ID,';') FROM ...pt-kill--match-info--ignore-commandKILLshow full processlistKILLStateInfo