怎么在MySQL中找出未提交的事务信息
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,本篇文章给大家分享的是有关怎么在MySQL中找出未提交的事务信息,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。mysql> select
千家信息网最后更新 2025年01月20日怎么在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安全错误
数据库的锁怎样保障安全
谢亮浙江宁波公安局网络安全
石家庄二手服务器在哪买
2016网络安全法
网络安全两单两卡
软件开发主流论坛
中国电影引入数据库
网络安全常识答案
python查询mysql数据库
无线网络安全wpa安全算法
方舟专用服务器怎么开始
稻田绘画软件开发
北京物流软件开发怎样收费
网络安全零报告表
怎么部署生产环境到阿里云服务器
互联网科技发达吗
数据库可以先填信息再连外键吗
个人承包软件开发 发票
互联网软件开发要学什么
外国网络安全设备
怎么成为服务器的大佬
网络安全进养老院
合肥联想服务器配件服务升级
银行特色软件开发对策
signalr 数据库
交易软件开发公司
福汇代理服务器
青岛软件开发助理招聘
mysql数据库主主搭建
服务器的管理员怎么
奥维企业服务器怎么创