mysql:1205-Lock wait timeout exceeded;try restarting transaction

1.现象

2.分析

使用下面sql在自带数据库的information_schema中查询,注意观察那些长时间开启事务又没完成的进程,然后根据进程的db、操作人、主机、事务开启时间和状态,来排查是什么情况导致的事务未完成(代码异常、执行时间超时等等);我这里是异步作业事务执行时间过长导致的

sql 复制代码
-- 查询事务和关联进程
select p.Id as '执行进程',p.`USER` as '执行用户',p.`HOST` as '执行进程主机',p.DB as '执行进程数据库',
t.*
from innodb_trx t
join PROCESSLIST p on t.trx_mysql_thread_id = p.ID;

3.解决

如果事务长时间没完成,能够判断出已经不可能完成了,直接杀掉开启该事务的进程,如果还能完成,则等待事务完成;同时优化代码,将长时间执行的事务分隔为多次短时间的事务.

sql 复制代码
-- 杀掉进程
kill 836703;
相关推荐
R.lin1 小时前
windows MySQL解压版安装教程
windows·mysql·adb
前端小臻1 小时前
MySQL 错误 1005 (errno: 150) 深度解析与解决方案
数据库·mysql
Dev7z2 小时前
在MySQL里创建数据库
android·数据库·mysql
invicinble2 小时前
mysql建立存数据的表(一)
android·数据库·mysql
spencer_tseng2 小时前
MySQL backup.bat
mysql
程序员水自流3 小时前
MySQL InnoDB存储引擎详细介绍之事务
java·数据库·mysql·oracle
Knight_AL3 小时前
MySQL STORED 生成列(Generated Column)详解:让 SQL 变快的秘密武器
数据库·sql·mysql
光羽隹衡4 小时前
MySQL的安装
数据库·mysql
脸大是真的好~4 小时前
尚硅谷-mysql专项训练-数据库服务的优化-慢查询-EXPLAIN字段
数据库·mysql·性能优化
一招定胜负5 小时前
navicat连接数据库&mysql常见语句及操作
数据库·mysql