千家信息网

怎么在MySQL中找出未提交的事务信息

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇文章给大家分享的是有关怎么在MySQL中找出未提交的事务信息,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。mysql> select
千家信息网最后更新 2026年11月01日怎么在MySQL中找出未提交的事务信息

本篇文章给大家分享的是有关怎么在MySQL中找出未提交的事务信息,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

mysql> select connection_id() from dual;+-----------------+| connection_id() |+-----------------+|  6 |+-----------------+1 row in set (0.00 sec) mysql> set session autocommit=0;Query OK, 0 rows affected (0.00 sec) mysql> delete from kkk where id =1;Query OK, 1 row affected (0.00 sec) mysql>

在另外一个会话(连接)里面,查询这个超过10秒未提交事务的详细信息:

SELECT t.trx_mysql_thread_id ,t.trx_state ,t.trx_tables_in_use ,t.trx_tables_locked ,t.trx_query ,t.trx_rows_locked  ,t.trx_rows_modified ,t.trx_lock_structs ,t.trx_started ,t.trx_isolation_level ,p.time  ,p.user ,p.host ,p.db ,p.commandFROM information_schema.innodb_trx t  INNER JOIN information_schema.processlist p   ON t.trx_mysql_thread_id = p.id WHERE t.trx_state = 'RUNNING'  AND p.time > 10  AND p.command = 'Sleep'\G

如上截图所示,trx_query 为NULL值。基本上无法找到未提交事务的SQL语句,MySQL内部关于事务的信息不是很细,甚至可以说有点简洁。我甚至无法定位到在那个表上发生了锁。只能看到trx_row_locked、trx_row_modified、trx_started等信息。使用show engine innodb status也是如此,只能看到一些基本信息

mysql> show engine innodb status;---TRANSACTION 1282583, ACTIVE 11937 sec2 lock struct(s), heap size 360, 8 row lock(s), undo log entries 1MySQL thread id 6, OS thread handle 0x7f8da2de3700, query id 190 localhost root

如果未提交的事务,阻塞了其它会话,那么有可能(仅仅是存在可能性,很多场景也不能找到位提交事务的相关SQL)找到未提交事务执行的SQL

如下测试所示,会话(连接 connection_id=11)中执行了delete操作,但是未提交事务

mysql> set session autocommit=0;Query OK, 0 rows affected (0.00 sec) mysql> select connection_id();+-----------------+| connection_id() |+-----------------+|  11 |+-----------------+1 row in set (0.01 sec) mysql> delete from kkk where id=1;Query OK, 1 row affected (0.00 sec) mysql>

另外一个会话(连接)执行了一个更新记录的操作。此时SQL将被阻塞。

mysql> select connection_id();+-----------------+| connection_id() |+-----------------+|  13 |+-----------------+1 row in set (0.00 sec) mysql> mysql> update kkk set id=100 where id=1;

我们在另外的会话中,执行下面SQL就可以查到未提交事务最后执行的SQL。

mysql> SELECT r.trx_id  waiting_trx_id,  -> r.trx_mysql_thread_id waiting_thread,  -> r.trx_query  waiting_query,  -> b.trx_id  blocking_trx_id,  -> b.trx_mysql_thread_id blocking_thread,  -> b.trx_query  blocking_query  -> FROM information_schema.innodb_lock_waits w  -> INNER JOIN information_schema.innodb_trx b  ->  ON b.trx_id = w.blocking_trx_id  -> INNER JOIN information_schema.innodb_trx r  ->  ON r.trx_id = w.requesting_trx_id; +----------------+----------------+----------------------------------+-----------------+-----------------+----------------+| waiting_trx_id | waiting_thread | waiting_query   | blocking_trx_id | blocking_thread | blocking_query |+----------------+----------------+----------------------------------+-----------------+-----------------+----------------+| 2830  |  13 | update kkk set id=100 where id=1 | 2825  |  11 | NULL  |+----------------+----------------+----------------------------------+-----------------+-----------------+----------------+1 row in set (0.00 sec) mysql> SELECT a.sql_text,  -> c.id,  -> d.trx_started  -> FROM performance_schema.events_statements_current a  -> join performance_schema.threads b  ->  ON a.thread_id = b.thread_id  -> join information_schema.processlist c  ->  ON b.processlist_id = c.id  -> join information_schema.innodb_trx d  ->  ON c.id = d.trx_mysql_thread_id  -> where c.id=11 -> ORDER BY d.trx_started\G;*************************** 1. row *************************** sql_text: delete from kkk where id =1  id: 11trx_started: 2019-06-12 23:36:131 row in set (0.03 sec) ERROR: No query specified mysql>

以上就是怎么在MySQL中找出未提交的事务信息,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

事务 信息 更多 知识 篇文章 阻塞 实用 简洁 可能性 场景 如上 就是 工作会 截图 文章 看吧 知识点 行业 详情 语句 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技工作委员会 高科技互联网 科技赋能下的互联网金融 互联网科技战争 合肥互联网科技公司 互联网科技媒体 互联网科技革命 互联网高科技股票 成都狮子座互联网科技 镁科技互联网资讯平台 盛创互联网科技有限公司 太原新华互联网科技学校怎么样 山东吉时兔互联网科技有限公司 移动互联网科技公司 互联网科技创新的路径 上海科技产业互联网平台 互联网科技资金流入 互联网科技和医药行业 平安好医生打造互联网科技医疗 科技互联网企业在行动 互联网科技工作委员会副主任毛军 亿账通互联网科技 顺网科技2021年互联网排名 广西拼得多互联网科技有限公司 智腾互联网科技有限公司 保险科技服务互联网营销体系 江苏苏星互联网科技有限公司 全球科技与互联网公司市值变化 亚光科技低轨卫星互联网 广东猫王互联网科技有限公司电话
0