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;
相关推荐
LZY161920 小时前
MySQL下载安装及配置
数据库·mysql
WJX_KOI1 天前
保姆级教程:Apache Flink CDC(standalone 模式)部署 MySQL CDC、PostgreSQL CDC 及使用方法
java·大数据·mysql·postgresql·flink
IT枫斗者1 天前
MyBatis批量插入性能优化:从5分钟到3秒的工程化实践
前端·vue.js·mysql·mongodb·性能优化·mybatis
王德印1 天前
工作踩坑之导入数据库报错:Got a packet bigger than ‘max_allowed_packet‘ bytes
java·数据库·后端·mysql·云原生·运维开发
秋氘渔1 天前
Django查询集优化:惰性加载、N+1查询问题及解决方案
mysql·django·select_related
dreams_dream1 天前
MySQL 的 GTID 模式
数据库·mysql
Dovis(誓平步青云)1 天前
《MySQL 权限与访问进阶:普通用户搭建、跨端登录及 C/C++ 开发对接教程》
数据库·mysql
t***44231 天前
MySQL 导出数据
数据库·mysql·adb
翔云1234562 天前
MySQL主从库复制中,主库如何查找对应日志文件位置
数据库·mysql
Mr_star_galaxy2 天前
【MySQL基础】视图和权限管理
数据库·mysql