千家信息网

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

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,找出未提交的MySQL线程/事务:SELECT * from information_schema.processlist; 这个能看到上面哪个SQL线程ID(下图的378号线程就是造成MDL锁的罪魁
千家信息网最后更新 2025年01月20日找出未提交的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安全错误 数据库的锁怎样保障安全 通州区网络技术咨询热线 学生网络安全法视频 txt怎么保存到数据库 xs的默认数据库文件格式是 网络安全小报的语言 加强网络安全信息问答题 网络安全员检查记录照片 计算机网络技术的课程感想 数据库用户权限表 注意网络安全 谨防网络诈骗 怎样登录单位服务器 70周年苏州网络安全检查 天津数据软件开发过程 数据内存查询与数据库查询的区别 网络安全检查工作亮点 我的世界服务器怎么重复一段话 玉林到广州途经的高速服务器 网络安全近几年有减弱趋势吗 gta5 怎么换服务器 sql显示数据库用户名 txt怎么保存到数据库 win10服务器管理工具 集团网络安全事件通报 网络安全合规图片 如何查看网络安全证书 网络服务器租赁从哪一年开始 服务器由哪些东西组成 公众号软件开发服务方案报价 数据中台服务器配置 庆余年手游服务器名字
0