mysql error 364_MySQL事务未提交致使整个表锁死
问题及说明:
当一个SQL事务执行完了,但未COMMIT,后面的SQL想要执行就是被锁,超时结束;报错信息以下:html
mysql> ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
处理步骤:
该问题发生环境为MySQL 5.6,在MySQL 5.5版本后,information_schema 库中增长了三个关于锁的表,分别以下:mysql
innodb_trx:当前运行的全部事务
innodb_locks:当前出现的锁
innodb_lock_waits:锁等待的对应关系
该问题能够直接从这个几张表入手,找到了一直没有提交的只读事务,而后 kill thread id
,最后确认只读事物是否被干掉了就OK了。解决步骤以下:
mysql> select * from information_schema.innodb_trx;
mysql> SHOW FULL PROCESSLIST;
mysql> kill 'thread id';
mysql> select * from information_schema.innodb_trx;
PS:如须要查看定位是哪条语句,能够在MySQL的binlog日志中查看根据id和时间定位查找语句。sql
MySQL事务知识点延伸:
1. 三个库的字段含义
mysql > desc information_schema.innodb_locks;
+-------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------------+------+-----+---------+-------+
| lock_id | varchar(81) | NO | | | |#锁ID
| lock_trx_id | varchar(18) | NO | | | |#拥有锁的事务ID
| lock_mode | varchar(32) | NO | | | |#锁模式
| lock_type | varchar(32) | NO | | | |#锁类型
| lock_table | varchar(1024) | NO | | | |#被锁的表
| lock_index | varchar(1024) | YES | | NULL | |#被锁的索引
| lock_space | bigint(21) unsigned | YES | | NULL | |#被锁的表空间号
| lock_page | bigint(21) unsigned | YES | | NULL | |#被锁的页号
| lock_rec | bigint(21) unsigned | YES | | NULL | |#被锁的记录号
| lock_data | varchar(8192) | YES | | NULL | |#被锁的数据
+-------------+---------------------+------+-----+---------+-------+
10 rows in set (0.00 sec)
mysql> desc information_schema.innodb_lock_waits;
+-------------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+-------------+------+-----+---------+-------+
| requesting_trx_id | varchar(18) | NO | | | |#请求锁的事务ID
| requested_lock_id | varchar(81) | NO | | | |#请求锁的锁ID
| blocking_trx_id | varchar(18) | NO | | | |#当前拥有锁的事务ID
| blocking_lock_id | varchar(81) | NO | | | |#当前拥有锁的锁ID
+-------------------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
mysql> desc information_schema.innodb_trx;
+----------------------------+---------------------+------+-----+---------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------------------+---------------------+------+-----+---------------------+-------+
| trx_id | varchar(18) | NO | | | |#事务ID
| trx_state | varchar(13) | NO | | | |#事务状态:
| trx_started | datetime | NO | | 0000-00-00 00:00:00 | |#事务开始时间;
| trx_requested_lock_id | varchar(81) | YES | | NULL | |#innodb_locks.lock_id
| trx_wait_started | datetime | YES | | NULL | |#事务开始等待的时间
| trx_weight | bigint(21) unsigned | NO | | 0 | |#
| trx_mysql_thread_id | bigint(21) unsigned | NO | | 0 | |#事务线程ID
| trx_query | varchar(1024) | YES | | NULL | |#具体SQL语句
| trx_operation_state | varchar(64) | YES | | NULL | |#事务当前操做状态
| trx_tables_in_use | bigint(21) unsigned | NO | | 0 | |#事务中有多少个表被使用
| trx_tables_locked | bigint(21) unsigned | NO | | 0 | |#事务拥有多少个锁
| trx_lock_structs | bigint(21) unsigned | NO | | 0 | |#
| trx_lock_memory_bytes | bigint(21) unsigned | NO | | 0 | |#事务锁住的内存大小(B)
| trx_rows_locked | bigint(21) unsigned | NO | | 0 | |#事务锁住的行数
| trx_rows_modified | bigint(21) unsigned | NO | | 0 | |#事务更改的行数
| trx_concurrency_tickets | bigint(21) unsigned | NO | | 0 | |#事务并发票数
| trx_isolation_level | varchar(16) | NO | | | |#事务隔离级别
| trx_unique_checks | int(1) | NO | | 0 | |#是否惟一性检查
| trx_foreign_key_checks | int(1) | NO | | 0 | |#是否外键检查
| trx_last_foreign_key_error | varchar(256) | YES | | NULL | |#最后的外键错误
| trx_adaptive_hash_latched | int(1) | NO | | 0 | |#
| trx_adaptive_hash_timeout | bigint(21) unsigned | NO | | 0 | |#
+----------------------------+---------------------+------+-----+---------------------+-------+
22 rows in set (0.01 sec)
转自:
https://www.colabug.com/1912433.html
原文出处:https://www.cnblogs.com/leon0/p/10943711.html并发
mysql error 364_MySQL事务未提交致使整个表锁死相关推荐
- mysql——如何解决事务未提交导致锁等待
背景 有一次同事使用 Navicat for MySQL 软件对某个表进行了 开启事物,导致我们一直查询不出数据. 这种情况在平时项目也会出现 事物未提交的情况. 那么问题来了,事物未提交导致锁等待如 ...
- mysql vip切换未重连问题_服务器断网事务未提交导致MYSQL锁表问题(ADSL拨号上网)...
环境描述: 由于特殊原因服务器的网络是电信ADSL拨号上网的,用"自动切换IP精灵"进行自动断网重连,每次重新连上网络需要2s时间,设置2小时切换一次网络. MYSQL数据库在远程 ...
- 解决MySQL事务未提交导致死锁报错 避免死锁的方法
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/xuheng8600/article/d ...
- mysql事务未提交读_mysql事务之未提交读Read uncommitted(仅学习)
1,Read uncommitted定义: wiki上的定义如下: 未提交读(READ UNCOMMITTED)是最低的隔离级别.允许脏读(dirty reads),事务可以看到其他事务"尚 ...
- 数据库事务未提交的初学理解
初学数据库,对事务未提交的个人见解(个人学习记录) 本人大二.通过计算机组成的学习,同时最近对mysql事务的疑惑 事务提交前,涉及修改表操作的DML语句执行后,所造成的结果到底有没有写入永久性磁盘, ...
- 事务未提交而释放锁导致的Redis锁失效分析
项目场景: 例如:一个user表,里面有个字段名称是account_money(账户金额). 现在的操作是,先查询这个表中账户余额多少,再加上前端传来的金额,最后更新到表中. 问题描述 Redis分布 ...
- mysql事务未提交 也未回滚
文章目录 一.场景模拟 二.紧急处理 三.原因分析 四.相关命令 1.查看正在执行的事务 2.查看正在锁的事务 3.查看等待锁的事务 4.查看所有的线程列表 5.定位未提交的事务执行的sql语句 公司 ...
- mysql死锁释放时间参数_【Mysql】mysql 事务未提交导致死锁 Lock wait timeout exceeded; try restarting transaction 解决办法...
问题场景 问题出现环境: 1.在同一事务内先后对同一条数据进行插入和更新操作: 2.多台服务器操作同一数据库: 3.瞬时出现高并发现象: 不断的有一下异常抛出,异常信息: org.springfram ...
- 事务未提交 别人能读取到吗_Mysql 事务-面试笔记
问题汇总: 什么是事务 事务的特征-ACID 事务的原理 事务隔离级别 并发事务带来的问题 - 数据库隔离现象 不可重复读与幻读的区别 事务隔离机制解决方法 什么是MVCC MVCC是如何工作的 MV ...
最新文章
- 服务器邮箱备份文件在哪里,如何轻松将数据文件备份到电子邮箱?
- 【代码实战】基于pytorch实现中文文本分类任务
- MySQL不能查看表_mysql root用户登录后无法查看数据库全部表
- ABAP data extract 数据抽取总结
- 如何让asp.net应用程序定时自动执行代码
- Keras-9 实现Seq2Seq
- “东哥”之后,京东再申请“强东”商标
- openssl生成Windows证书
- js - JSON构造函数
- 优秀的管理者如何带好团队(这几个技巧你是否学会)
- 小米路由修改服务器密码,小米路由器怎么重新设置密码?
- pycharm 拼音检查
- android电视,手机控制,Android手机遥控电视:智能语音控制节目
- 15 个为编程初学者准备的网站
- Abbreviation----Java实现
- 计算机软考程序员常考知识点(1)
- halcon循环语句,条件句结构格式
- chrome突然打不开网页,其他浏览器可以,解决办法
- GDAL/OGR 地理要素样式
- 双循环是什么意思c语言,什么是双循环
热门文章
- win10系统Jinlk固件烧写
- android简易计算器
- 《动手学深度学习》报错 解决方案RuntimeError: DataLoader worker (pid(s) ...) exited unexpectedly
- Task01 文件处理与邮件自动化
- weblogic 与 tuxedo 互联 wtc
- Flutter系列之在 macOS 上安装和配置 Flutter 开发环境
- (一)通用定时器的相关介绍
- 高性能服务器架构(High-performace Server Architecture)
- python中breakpoint_Python3.7 特色(2)-breakpoint 內建除錯
- cisp含金量怎么样?