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;
相关推荐
·醉挽清风·19 小时前
学习笔记—MySQL—库表操作
笔记·学习·mysql
数据库小学妹20 小时前
数据库连接池避坑指南:告别“连接超时”与“资源耗尽”,让系统跑得更快!
数据库·redis·sql·mysql·缓存·dba
前进的李工21 小时前
EXPLAIN输出格式全解析:JSON、TREE与可视化
开发语言·数据库·mysql·性能优化·explain
达梦产品与服务21 小时前
稳扎稳打,持续迭代 | SQLark V3.10 更新,30+ 项优化与修复
mysql·oracle·达梦数据库·pg·sqlark百灵连接
shizhan_cloud1 天前
MySQL 索引优化 + 慢查询日志
数据库·mysql
Drache_long1 天前
MySQL数据库(故障排除)
数据库·mysql
shaoming37761 天前
浏览器动作开发:地址栏图标点击事件、弹出页面设计
android·mysql·adb
Riu_Peter1 天前
【技术】Docker 部署 MySQL
mysql·adb·docker
Irene19911 天前
SQL示例:外键约束是关系型数据库中用于建立两个表之间链接的一种规则
mysql
zshs0001 天前
从 Raft 到 MySQL:我是怎么推导出半同步复制原理的
数据库·分布式·mysql