mysql Lock wait timeout exceeded; try restarting transaction

news2024/11/24 13:00:03

文章目录

  • 一、mysql死锁及超时的原因
  • 二、mysql死锁排查思路
    • 1、show full processlist 查询当前数据库全部线程
    • 2、information_schema

一、mysql死锁及超时的原因

当在业务逻辑中看到这个错误,或者mysql中使用update语句更新数据报错: Lock wait timeout exceeded; try restarting transaction。也就是遇到了mysql死锁,等待资源,事务锁的问题。

可能原因:意外处理没有关闭连接,导致连接过多、或是要更新的表的锁在其它线程手里、系统异常导致事务未提交,再次请求相同记录等等。

InnoDB关于在出现锁等待的时候,会根据参数innodb_lock_wait_timeout的配置(默认50s),判断是否需要进行timeout的操作:

二、mysql死锁排查思路

1、show full processlist 查询当前数据库全部线程

show full processlist 查询当前数据库全部线程
show engine innodb status命令查看当前的数据库请求,然后再判断当前事务中锁的情况
select * from information_schema.innodb_trx 查询当前运行的全部事务

注:select * from information_schema.innodb_trx;
MySQL 5.5版本以上才可以用此方法,5.5版本以下会没有这个表;[Err] 1109 - Unknown table ‘innodb_trx’ in information_schema
当中trx_mysql_thread_id为事务线程的id,參照show full processlist命令中的线程信息查看

如果数据库中有锁的话,LOCK WAIT的就是锁等待的


此时你可以直接使用命令:kill 事务线程id 杀掉它。比如:kill 99999

没有的话,找到Command 状态是query 并且Time 时间很长的id)有时候一定程度上也能解决一定的问题。

再用 show full processlist 查询当前数据库全部线程,发现刚才的线程没了。

但是一般这样还是很难发现被锁的行记录问题所在

2、information_schema

information_schema这张数据表保存了MySQL服务器所有数据库的信息。

我们可以用这三张表innodb_trx、innodb_locks、innodb_lock_waits,使用如下命令,简单地监控当前的事务并分析可能存在的问题:

 select * from information_schema.innodb_trx ( 当前运行的所有事务)

 select * from information_schema.innodb_locks (当前出现的锁)

 select * from information_schema.innodb_lock_waits (锁等待的对应关系)

注意:在8.0.13版本中
innodb_locks表由performance_schema.data_locks表所代替,
innodb_lock_waits表则由performance_schema.data_lock_waits表代替。

三张表具体信息:



其中比较常用的一些列:

  • trx_id:InnoDB存储引擎内部唯一的事物ID
  • trx_status:当前事务的状态
  • trx_status:事务的开始时间
  • trx_requested_lock_id:等待事务的锁ID
  • trx_wait_started:事务等待的开始时间
  • trx_weight:事务的权重,反应一个事务修改和锁定的行数,当发现死锁需要回滚时,权重越小的值被回滚
  • trx_mysql_thread_id:MySQL中的进程ID,与show processlist中的ID值相对应
  • trx_query:事务运行的SQL语句

综上大体可以清楚的找到等待的事务即没有获取锁的事务,进一步调整业务逻辑代码。

一些建议:
1、可以结合update语句,调整索引,让update能唯一定位到数据行,尽量退化到行锁粒度;
2、相关查询语句增加索引,减少事物整体耗时;
3、避免长事物、可以降低@Transactional的粒度;
4、减少批处理数据量,规范业务逻辑流程,考虑异常事务回滚等问题;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/518769.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数影周报:丰田215万名日本客户信息被无意泄露,菜鸟将于明年初在港IPO

本周看点:丰田215万名日本客户信息被无意泄露;美光宣布吴明霞出任美光中国区总经理;谷歌将向Gmail用户提供暗网数据泄露报告;淘宝天猫集团架构调整完成;菜鸟计划于2024年初在香港IPO...... 数据安全那些事 丰田215万名…

体验了基于ChatGPT的谷歌翻译插件后,我把其他翻译插件移除了

最近,一个基于 ChatGPT 的谷歌浏览器翻译插件挺火的,我体验了下,总结下来就一个字“666”。 github 上已经有 14.9k 的 star 了 传送门:GitHub - yetone/openai-translator: 基于 ChatGPT API 的划词翻译浏览器插件和跨平台桌面端…

AI学术界无人后继?高校毕业生纷纷进厂,全是香饽饽

来源 | 新智元 微信号:AI-era 【导读】近日,有外媒对一批美国名校的大学生和教授进行了采访。结果显示,高校毕业生入职科技公司已成主流。 AI火,搞AI的人就火。 这不,据Insider最近的一次采访报道,科技类…

Vue3-黑马(五)

目录: (1)vue3-基础-axios-拦截器 (2)vue3-基础-条件与列表 (3)vue3- 基础-监听器 (1)vue3-基础-axios-拦截器 我们自己创建axios对象有一个好处,就是可以…

[译] Flutter 3.10 的新功能

[译] Flutter 3.10 的新功能 原文 https://medium.com/flutter/whats-new-in-flutter-3-10-b21db2c38c73 无缝的Web和移动端集成,Impeller稳定版的突破性图形性能,以及更多 欢迎使用Flutter 3.10!我们非常期待展示我们令人惊叹的Flutter社区所…

java可视化开发工具好用不好用?

java可视化开发工具到底好用不好用?这是不少粉丝朋友经常询问到的一个问题。在数字化发展趋势越发明显的当下,java可视化开发工具可以帮助各中大型企业实现转型升级,它的灵活、简洁、易操作、可视化等功能优势,让很多客户朋友欣慰…

OLYMP‘ARTS 2023奥艺大会中国推介会在北京盛大举行

北京时间2023年5月11日16时,以“艺术连接世界”为主题的OLYMPARTS 2023 国际奥艺大会中国推介会在北京盛大举行。此次活动由国际奥艺委员会(WOAC)指导支持,共邀请了国外驻华机构、文旅部、央国企、国内外协会机构、知名艺术家代表…

【项目源码】智慧班牌源码 家校互联小程序源码 智慧校园云平台

智慧校园平台源码 智慧班牌源码 人脸识别技术 电子班牌源码 家校互联小程序源码 源码开发环境:Javaspringbootvueelement-uimysql 智慧校园系统定位于中小学教育学校,侧重实际应用,讲究实际,突出加强校园安全监管,德…

【数值模型系列】CMAQ全局属性修改

一、问题产生 在做一个月的浓度预测时,由于GFS只能预报16天左右,因此需要使用CFS气象数据来驱动WRF模型,但CFS在WRF4.x版本有问题,因此重新装了WRF3.9.1版本的WRF。 而我这里的CMAQ ICON会去取前一天的CCTM CONC制作新的ICON文件…

ImageBind 横跨六种数据模式,用向量统一 AI 语言

出品人:Towhee 技术团队 作者:顾梦佳 人工智能(AI)最近毋庸置疑又迎来了一个高速发展的浪潮。 目前,人工智能的应用已经渗透到各个领域,包括自然语言处理、计算机视觉、语音识别、机器人技术等,…

如何自己搭建Scrapy爬虫框架

前言 当你学了一段时间爬虫后,就会知道各种功能太多而且麻烦。还不如自己整理个框架方便的多。因此,从开始写爬虫程序开始,就会慢慢的接触到一些有关爬虫的框架、效率提升而且扩展也很方便。接下来我将会以Scrapy爬虫框架将我的学习过程记录下…

查找符合条件,且不重复的数据 +++ EXCEL的数组公式(未完成)

查找符合条件,且不重复的数据 1 目标问题 查找第1列,月份为5月,并且第2列不重复的数据个数有2个条件 有的版本有唯一计数,有的没有 2 比较简单的方法 2.1 加辅助列,简单公式,其实逻辑是更清晰的 这里主要…

【数据结构】和栈一样简单的结构——队列

【数据结构】和栈一样简单的结构——队列 一、前言1、什么是队列?2、使用什么结构实现? 二、目标三、实现1、初始化工作2、入队2.1、图解思路2.2、代码实现 3、出队3.1、图解思路3.2、代码实现 4、打印队列(用于测试)5、返回队头元素6、返回队尾元素7、返…

Android工程师复盘小米、滴滴的面试全过程,网易offer已收入囊中

背景 时间过的真快,16年毕业到现在也有好几年了,最近面试试着投了几十家Android framework工程师的岗位,也面试了好几家,其中包括滴滴出行、小米、合众新能源、网易、最终收到了网易和滴滴offer,小米二面挂掉&#xf…

四、Eureka注册中心集群配置

目录 需要两个eureka server项目,之前已经有一个springcloud-eureka 1、在springcloud项目下新建一个聚合项目springcloud-eureka2 2、修改springcloud-eureka2的pom文件,引入eureka-server依赖 3、增加springcloud-eureka2的启动类,开启…

五、基于服务发现获取并访问远程接口

目录 1、在springcloud-order项目中新建controller供外部远程访问 2、在springcloud-member项目中新建controller去访问远程接口 3、运行springcloud-eureka、springcloud-member、springcloud-order项目的启动类 4、访问member服务的接口,通过member服务调用or…

WiFi(Wireless Fidelity)基础(十一)

目录 一、基本介绍(Introduction) 二、进化发展(Evolution) 三、PHY帧((PHY Frame ) 四、MAC帧(MAC Frame ) 五、协议(Protocol) 六、安全&#x…

python进阶--月考二

python进阶--月考二 (一)装饰器(二)创建名为express.py文件,编写以下推导式(25分)(三)创建名为process_test.py的文件,计算1-3000之间的水仙花数(…

xormplus是xorm的增强版,为xorm提供类似ibatis的配置文件及动态SQL支持

简介 xorm是一个简单而强大的Go语言ORM库,通过它可以使数据库操作非常简便。本库是基于原版xorm的定制增强版本,为xorm提供类似ibatis的配置文件及动态SQL支持,支持AcitveRecord操作。 github地址:https://github.com/armingli/xorm //安装…