MySQL 空事务
问题描述;
研发同事反应MySQL数据库有锁,检查innodb_trx时,发现有很多长时间未结束的空事务。
这些事务的trx_mysql_thread_id都为0,因此不能通过kill id 的方式强制关闭这些长时间未结束的僵尸事务。
SELECT
trx_mysql_thread_id, trx_id, trx_started, sysdate(), trx_state, trx_query
FROM information_schema.innodb_trx t
WHERE (UNIX_TIMESTAMP(sysdate()) - UNIX_TIMESTAMP(t.trx_started)) > 10;
问题分析
从trx_state 列的信息来看,这些事务都在Running 状态,但trx_query 为null。直观上无法分析出这些事务对应的SQL.
在information_schema中的PROCESSLIST, INNODB_LOCKS,INNODB_LOCK_WAITS 这几张表中也没分析出有价值的信息。
通过show engine innodb status\G 确实发现有很多Active的事务
---TRANSACTION 328393988035152, not started
0 lock struct(s), heap size 1136, 0 row lock(s)
---TRANSACTION 16946872173, ACTIVE (PREPARED) 1648933 sec recovered trx
1 lock struct(s), heap size 1136, 0 row lock(s), undo log entries 1
---TRANSACTION 16944705639, ACTIVE (PREPARED) 1708259 sec recovered trx
4 lock struct(s), heap size 1136, 2 row lock(s), undo log entries 1
---TRANSACTION 16944693889, ACTIVE (PREPARED) 1708524 sec recovered trx
2 lock struct(s), heap size 1136, 1 row lock(s), undo log entries 1
---TRANSACTION 16944693748, ACTIVE (PREPARED) 1708549 sec recovered trx
1 lock struct(s), heap size 1136, 0 row lock(s), undo log entries 1
正常的事务不应该执行这么长时间,而不被发现。有没有可能是XA事务呢?
通过xa recover; 检查 , 果然发现很多XA事务。
XA RECOVER;
+----------+--------------+--------------+------------------------------------------------------+
| formatID | gtrid_length | bqual_length | data |
+----------+--------------+--------------+------------------------------------------------------+
| 1 | 32 | 8 | 5685c69b0df34ccc94e9da437c399344xdb1_002 |
| 1 | 32 | 10 | 84e2f7d6fd674f5592f135415e9c0ad4idcent_002 |
| 1 | 32 | 9 | f0eedc6c38894e88837771f019ddc090imail_002 |
| 1 | 32 | 10 | 6677f0102a6c4a0aab2c4696bd20d690idcent_002 |
+----------+--------------+--------------+------------------------------------------------------+
如何释放这些长时间未提交的XA事务呢?
通过MySQL官方文档,最终决定采用rollback的方式,回滚掉这些XA事务。
xa rollback '5685c69b0df34ccc94e9da437c399344','xdb1_002',1;
Query OK, 0 rows affected (0.00 sec)
依次回滚这些长时间未结束的XA事务, 再次检查innodb_trx 未发现相关的事务信息。
---------------------
作者:lwei_998
来源:CSDN
原文:https://blog.csdn.net/lwei_998/article/details/83149231
版权声明:本文为博主原创文章,转载请附上博文链接!
MySQL 空事务的更多相关文章
- MySQL使用空事务解决slave从库errant问题
MySQL集群一般部署为主从架构,主库专门用于写入数据,从库用于读数据. 异常情况下,在从库上写入数据,就会出现主从数据不一致问题,称为errant. 如果从库上的这些数据主库上已经有了,或者主库不需 ...
- MySQL数据库事务剖析
MySQL数据库事务剖析 事务就是一组原子性的SQL查询,是一个独立的执行单元.事务内的语句,要么全部执行成功,要么全部执行失败. 1.事务的标准特征 一个运行良好的事务处理系统,必须具备原子性.一致 ...
- mysql 函数 事务
mysql 中提供了许多内置函数 CHAR_LENGTH(str) 返回值为字符串str 的长度,长度的单位为字符.一个多字节字符算作一个单字符. 对于一个包含五个二字节字符集, LENGTH()返回 ...
- MySQL的事务和锁
MySQL的事务和锁 阅读目录 什么是事务 事务:是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作:这些操作作为一个整体一起向系统提交,要么都执行.要么都不执行:事务是一组不可再 ...
- 一文读懂MySQL的事务隔离级别及MVCC机制
回顾前文: 一文学会MySQL的explain工具 一文读懂MySQL的索引结构及查询优化 (同时再次强调,这几篇关于MySQL的探究都是基于5.7版本,相关总结与结论不一定适用于其他版本) 就软件开 ...
- 12、mysql的事务日志
mysql的事务日志 事务有4种特性:原子性.一致性.隔离性和持久性.那么事务的四种特性到底是基于什么机制实现呢? 事务的隔离性由锁机制实现. 事务的原子性.一致性和持久性由事务的redo日志和und ...
- MySQL 数据库事务与复制
好久没有写技术文章了,因为一直在思考 「后端分布式」这个系列到底怎么写才合适. 最近基本想清楚了,「后端分布式」包括「分布式存储」和 「分布式计算」两大类. 结合实际工作中碰到的问题,以寻找答案的方式 ...
- Mysql分布式事务
关于Mysql分布式事务介绍,可参考:http://blog.csdn.net/luckyjiuyi/article/details/46955337 分为两个阶段:准备和执行阶段.有两个角色:事务的 ...
- mysql的事务和select...for update
一.mysql的事务mysql的事务有两种方式:1.SET AUTOCOMMIT=0;也就是关闭了自动提交,那么任何commit或rollback语句都可以触发事务提交;如果SET AUTOCOMMI ...
随机推荐
- 面试之leetcode分治-求众数,x幂等
1 leetcode50 计算 x 的 n 次幂函数. 实现 pow(x, n) ,即计算 x 的 n 次幂函数. (1)调用库函数 (2)暴力o(N) (3)分治 xxxxxx.......x ...
- java开发异常Exception集锦
背景:整理开发过程中的异常问题 java.lang.Exception: No tests found matching 一般出现在新导入的工程中.在sts中通过open project的方式导入工程 ...
- python实践项目三:将列表添加到字典
1.创建一个字典,其中键是字符串,描述一个物品,值是一个整型值,说明有多少该物品.例如,字典值{'rope': 1, 'torch': 6, 'gold coin': 42, 'dagger': 1, ...
- QT -- QString处理
1. 去掉字符串多余的空格,回车等. QString QString::simplified () const Returns a string that has whitespace removed ...
- LeetCode 704. 二分查找(Binary Search)
704. 二分查找 704. Binary Search 题目描述 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target,写一个函数搜索 nums 中的 target,如果 ...
- [转帖]ARM A77+G77最强公版架构:联发科5G SoC计划11月26日发布
ARM A77+G77最强公版架构:联发科5G SoC计划11月26日发布 https://www.cnbeta.com/articles/tech/909025.htm 主流的手机SoC厂商已经纷纷 ...
- vue封装一个简单的div框选时间的组件
记录一下我前段时间封装的一个vue组件吧.技术需要积累,有时间我把我之前写的还不错的组件都开源出来.并尝试vue和react 两种方式的组件封装.今天简单写下鼠标框选div选中效果的封装吧. div框 ...
- python 之 Django框架(ORM常用字段和字段参数、关系字段和和字段参数)
12.324 Django ORM常用字段 .id = models.AutoField(primary_key=True):int自增列,必须填入参数 primary_key=True.当model ...
- day34——僵尸进程和孤儿进程、互斥锁、进程之间的通信
day34 僵尸进程和孤儿进程 基于unix环境(linux,macOS) 主进程需要等待子进程结束之后,主进程才结束 主进程时刻监测子进程的运行状态,当子进程结束之后,一段时间之内,将子进程进行回收 ...
- 全栈项目|小书架|服务器开发-Koa2 连接MySQL数据库(Navicat+XAMPP)
为什么使用数据库 为什么需要数据库?-知乎 相比与文件系统,数据库具有以下优势: 高效率:查找效率高 高可用:可数据库共享 安全性强:数据不能随意修改 选择哪个数据库 数据库可以分为关系型数据库和非关 ...