mysql update运行超时解决方案
问题描述:
今天update(修改)mysql数据库中一张表时,发现时间很长,而且会失败。报错:Error Code: 1205. Lock wait timeout exceeded; try restarting transaction
解决方案:
# 查看事务表
1 | select * from information_schema.innodb_trx |
在结果中发现trx_mysql_thread_id 有值 xxxx (数字)
# 运行
1 | show processlist |
结果中会有一条与xxxx(数字)对映的数据
# 在sql中执行
1 | kill xxxx |
原因分析:
mysql的innoDB存储引擎是支持事务的,事务开启后没有被主动commit。导致该资源被长期占用,其他事务在抢占该资源时,因上一个事务的锁而导致抢占失败!因此出现Lock wait timeout exceeded
MySQL 5.5 innodb_lock_wait 锁等待:
在mysql 5.5 中,information_schema 库中增加了三个关于锁的表(MEMORY引擎);
innodb_trx ## 当前运行的所有事物
innodb_locks ## 当前出现的锁
innodb_lock_waits ##锁等待的对应关系
对应表的结构:
参考文章一:https://blog.csdn.net/wyyl1/article/details/80517139
参考文章二:http://blog.sina.com.cn/s/blog_6bb63c9e0100s7cb.html
参考文章三:https://my.oschina.net/quanzhong/blog/222091
如有更详细的资料,望帅哥美女,CV分享
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库