千家信息网

找出未提交的MySQL线程/事务

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,找出未提交的MySQL线程/事务:SELECT * from information_schema.processlist; 这个能看到上面哪个SQL线程ID(下图的378号线程就是造成MDL锁的罪魁
千家信息网最后更新 2026年10月31日找出未提交的MySQL线程/事务

找出未提交的MySQL线程/事务:


SELECT * from information_schema.processlist; 这个能看到上面哪个SQL线程ID(下图的378号线程就是造成MDL锁的罪魁祸首)




SELECT trx_id,trx_state,trx_started,trx_mysql_thread_id,CURRENT_TIMESTAMP - trx_started AS RUN_TIME from information_schema.innodb_trx;


然后 kill 掉378 线程即可。




补充:

场景三:

通过show processlist看不到TableA上有任何操作,在information_schema.innodb_trx中也没有任何进行中的事务。这很可能是因为在一个显式的事务中,对TableA进行了一个失败的操作(比如查询了一个不存在的字段),这时事务没有开始,但是失败语句获取到的锁依然有效,没有释放。从performance_schema.events_statements_current表中可以查到失败的语句。

官方手册上对此的说明如下:

If the server acquires metadata locks for a statement that is syntactically valid but fails during execution, it does not release the locks early. Lock release is still deferred to the end of the transaction because the failed statement is written to the binary log and the locks protect log consistency.

也就是说除了语法错误,其他错误语句获取到的锁在这个事务提交或回滚之前,仍然不会释放掉。because the failed statement is written to the binary log and the locks protect log consistency 但是解释这一行为的原因很难理解,因为错误的语句根本不会被记录到二进制日志。

处理方法:通过performance_schema.events_statements_current找到其sid, kill 掉该session. 也可以 kill 掉DDL所在的session.








事务 线程 语句 错误 有效 罪魁祸首 一行 下图 也就是 也就是说 二进制 原因 场景 字段 官方 对此 就是 所在 手册 方法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司华为 互联网金融 科技金融 互联网 卓越科技 银优互联网科技有限公司 奇士达互联网科技 互联网科技宣传片 广州优美互联网科技 科技与互联网哪个更好 互联网金融中的现代科技 福建科技产业互联网发展 华夏恒生互联网科技013171 乌鲁木齐新华智原互联网科技学校 美国互联网科技公司 互联网风格科技公司名称 互联网科技企业商标注意事项 保山互联网科技靠谱吗 深圳互联网科技园地址 现代互联网科技公司 山东亿川互联网科技有限责任公司 互联网 科技节活动 微视频大赛 科技制造互联网公司 润盈互联网科技 广州慧亚互联网科技怎么样 中国互联网有什么科技含量 重庆互联网医院沙龙医盟信息科技 如何创新互联网科技 互联网方面的科技前沿 广东鹅鹅鹅互联网科技有限公司 福仕德教育科技互联网 科技互联网经济论坛
0