Lock wait timeout exceeded; try restarting transaction问题分析

Mysql出现“ Lock wait timeout exceeded; try restarting transaction”错误 今天用django写一个小程序,结果调用数据库d 阅读详情

目录 

一、异常发现

 二、异常定位

1、锁表语句确认

2、实际场景排查

 三、解决思路

1、本次解决方式

2、其他场景解决思路扩展             

       1、【治标方法】innodb_lock_wait_timeout 锁定等待时间改大

        2、【治标方法】事务信息查询

        3、【治标方法】如果杀掉线程依然不能解决,可以查找执行线程耗时比较久的任务,kill掉

        4、【根本解决方法!】找到锁表的事务,分析锁表原因,进行优化

一、异常发现
        在进行接口调用时,响应时间超长,之后接口返回异常,查看日志发现为Lock wait timeout exceeded; try restarting transaction的错误。  

  

 二、异常定位
        因为使用的数据库为mysql,而InnoDB表类型会出现锁等待的情况,在出现锁等待时,会根据参数innodb_lock_wait_timeout(默认50s)的配置,判断是否需要进行timeout的操作,如果等待时间超过了设置的时间就会报错。

1、锁表语句确认
        可以在information_schema查询数据库使用情况,information_schema这张数据表保存了MySQL服务器所有数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。再简单点,这台MySQL服务器上,到底有哪些数据库、各个数据库有哪些表,每张表的字段类型是什么,各个数据库要什么权限才能访问等等信息都保存在information_schema表里面。

        我们可以用下面三张表来查原因: 

1、 innodb_trx ## 当前运行的所有事务 
 2、innodb_locks ## 当前出现的锁 
 3、innodb_lock_waits ## 锁等待的对应关系

        如果数据库中有锁的话,查看 innodb_trx就可以看到对应的信息。通过查询知道是哪条语句锁了,图中红色语句为占用系统资源的语句,我们需要杀掉这个锁,执行 kill 线程id号。上面这条记录的id为319618246 ,所以我们执行:kill 319618246即可。以下为执行前后对比:

2、实际场景排查
        按照经验列举锁等待超时出现的情况:

1、在同一事务内先后对同一条数据进行插入和更新操作

2、多台服务器操作同一数据库

3、瞬时出现高并发现象,spring事务造成数据库死锁,后续操作超时抛出异常

4、事务A对记录C进行更新/删除操作的请求未commit时,事务B也对记录C进行更新/删除操作。此时,B会等A提交事务,释放行锁。当等待时间超过innodb_lock_wait_timeout设置值时,会产生“LOCK WAIT”事务。

5、数据库内存不足,导致无法执行写操作。

         本次问题是因为update语句导致的锁表,因为是在疲劳测试(压测12小时)过程中出现的问题,使用10并发进行压测,每秒差不多15笔申请调用,所以上述的1234都不符合,查看发现mysql资源不足,内存达到100%,确认实际异常原因。

 三、解决思路
1、本次解决方式
        删除无用数据。并使用下边的方法2。

2、其他场景解决思路扩展             
       1、【治标方法】innodb_lock_wait_timeout 锁定等待时间改大
        修改超时时间将 #innodb_lock_wait_timeout = 50 修改为 innodb_lock_wait_timeout = 500。

        缺点:全局更改,影响也是全局的,等待时间加长,容易使等待事务增多导致堆积问题。

        2、【治标方法】事务信息查询
        通过SELECT * FROM information_schema.innodb_trx查询未提交事务,查到一个一直没有提交的只读事务(trx_state=”LOCK WAIT”),找到对应线程,执行:kill 线程ID。线程id为表中的trx_mysql_thread_id字段。

        3、【治标方法】如果杀掉线程依然不能解决,可以查找执行线程耗时比较久的任务,kill掉
        执行SELECT * from information_schema.`PROCESSLIST` WHERE Time > 1000 AND USER = 'xxx' ORDER BY TIME desc;找到线程:kill 线程ID。

        4、【根本解决方法!】找到锁表的事务,分析锁表原因,进行优化
        根据实际业务进行解决,举例(网上找的):司机APP进行运单签收,需要对et_waybill_info表某些记录进行更新操作。一直处于锁等待状态,直到超时报错。经排查发现:系统定时器定时执行任务,将所有未标识亮的已装车或签收的运单,按批次处理,如果运单装车了但长时间未上传GPS、温湿度等信息,会一直被定时器处理。数据量越积越大,队列长时间等待,对et_waybill_info表锁住没有释放,致使签收要操作et_waybill_info表无法拿到锁,进行数据操作。

        临时解决方案:停掉定时器任务。

        根本解决方案:优化定时器。

【异常解决】MySQL数据库:Lock wait timeout exceeded; try restarting transaction问题解析及解决方案 通过查询知道是哪条语句锁了,图中红色语句为占用系统资源的语句,我们需要杀掉这个锁,执行 kill 线程id号。也就是说,这台 MySQL 服务器上,到底有哪些数据库、各个数据库有哪些表,每张表的字段类型是什么,各个数据库要什么权限才能访问等等信息都保存在。查询未提交事务,查到一个一直没有提交的只读事务(trx_state=”LOCK WAIT”),找到对应线程,执行:kill 线程ID。表的引擎是 InnoDB 表类型,此时会出现锁等待的情况,在出现锁等待时,会根据参数。找到线程:kill 线程ID。 阅读详情

相关推荐

图像修复黑科技:对比BM3D/DnCNN等5种去噪器在PNP框架中的实战效果

本文深度评测了BM3D、DnCNN等五款主流去噪器在即插即用(PnP)优化框架中的实战表现。通过量化指标、视觉对比及超分等泛化任务测试,揭示了深度学习模型在性能与收敛速度上的优势,并为不同应用场景提供了选型指南与工程化建议。

weixin_29065959的博客 365

Lock wait timeout exceeded; try restarting transaction 死锁的问题处理

Lock wait timeout exceeded; try restarting transaction 死锁的问题处理

waitle500的博客 1598

Matlab子图排版终极指南:从tight_subplot到tiledlayout的实战对比

本文深入对比Matlab中两大子图排版工具:社区经典函数tight_subplot与官方现代布局管理器tiledlayout。针对默认subplot产生的子图间距与边缘距离问题,详细解析两者的设计哲学、参数控制与实战应用,帮助用户根据版本与需求选择最佳方案,实现高效、精确且美观的多子图排版。

weixin_29048309的博客 360

出现 Lock wait timeout exceeded; try restarting transaction报错的几种情况解决方式

1, 查看事务 运行情况 select * from information_schema.innodb_trx 2,查看结果,直接kill trx_mysql_thread_id为线程id,直接kill 18 3,如果trx_mysql_thread_id为0,则说明是xa事务 XA事务的回滚操作 xa recover; 如果data为:172.31.128.1:8091:4873088614704820233-4873088614704820235 如果formatID:9752 如果gtri

felix 2776

双斜率积分ADC:高精度测量中的经典选择与TC530/TC534实战指南

模数转换器(ADC)是连接模拟世界与数字系统的关键桥梁,其核心任务是将连续的模拟信号转换为离散的数字量。在众多ADC类型中,双斜率积分ADC以其独特的原理脱颖而出,它通过积分与反积分的线性过程,用时间换取精度,实现了对噪声的卓越抑制和极高的线性度。这种技术价值使其在对抗工频干扰、追求长期稳定性的场景中无可替代,尤其适用于精密测量仪表和工业传感器信号采集。本文聚焦于双斜率积分ADC的经典代表TC530与TC534,深入剖析其工作原理、关键参数如积分电阻、积分电容的选择,并提供从硬件电路设计到软件驱动的完整实战

weixin_30847063的博客 358

揭秘《出塞》UE5+AIGC高效工作流 | 从创意到成片全流程解析

李季老师(老李头儿)在第四届瑞云大赛斩获季军的作品《出塞》的完整创作流程!

UWA—简单优化,优化简单! 766

MySQL 事务没有提交导致 锁等待 Lock wait timeout exceeded

java.lang.Exception: ### Error updating database. Cause: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction ### The error may involve defaultParameterMap ### The err...

jxy199132的专栏 1599

基于 Qt 的轻量化工业组态软件设计与实现

本文设计并实现了一种基于Qt框架的轻量化工业组态软件,解决了传统组态软件体积庞大、部署复杂等问题。该软件采用模块化架构,集成可视化图形编辑、设备数据采集、脚本扩展等核心功能,具有跨平台运行、资源占用低、启动速度快等特点。通过关键技术优化,实现了高效稳定的数据采集、脚本控制和网络通信,可广泛应用于工业机器人HMI、小型PLC监控等轻量化场景。测试结果表明,该软件体积约30MB,运行内存占用60-80MB,启动时间1.2秒,满足工业轻量化监控需求。未来可扩展更多工业组件和协议支持,进一步提升应用价值。

谢谢大家的关注和点赞!这里只有纯纯的知识干货,没有一句废话。希望能实实在在帮到大家~要是觉得有用,别忘了给我点支持哟,你 140

Lock wait timeout exceeded; try restarting transaction问题解析

目录 一、异常发现 二、异常定位 1、锁表语句确认 2、实际场景排查 三、解决思路 1、本次解决方式 2、其他场景解决思路扩展 1、【治标方法】innodb_lock_wait_timeout锁定等待时间改大 2、【治标方法】事务信息查询 3、【治标方法】如果杀掉线程依然不能解决,可以查找执行线程耗时比较久的任务,kill掉 4、【根本解决方法!】找到锁表的事务,分析锁表原因,进行优化 一、...

zcm036200的博客 13万+

YOLO26 实例分割技术:Mask 分支与特征融合

YOLO26实例分割技术研究摘要:本文提出了一种基于YOLO架构的高效实例分割方法,通过创新设计Mask分支和特征融合策略解决像素级分割精度、多尺度目标处理等挑战。系统采用共享Backbone提取特征,检测分支输出边界框和类别,Mask分支生成原型Mask和组合系数。核心创新包括:1)原型Mask生成与线性组合机制;2)检测与Mask特征共享;3)结合BCE和Dice的多任务损失函数。实验表明该方法在保持实时性的同时实现了高质量分割,为轻量级实例分割提供了新思路。

一键难忘的博客 248

知识图谱构建中的数据清洗:AI原生应用高质量图谱的前提

数据清洗是知识图谱构建的核心前置环节,直接决定AI原生应用(如智能问答、个性化推荐、决策支持系统)的图谱质量与应用效能。本文以第一性原理为起点,系统解析数据清洗的理论框架、技术架构与工程实践,覆盖从多源异构数据的噪声检测到高质量知识三元组(实体-关系-实体)生成的全流程。通过层次化概念映射(专家→中级→入门)、数学形式化建模及工业级案例分析,揭示数据清洗在解决实体歧义、关系冲突、结构不一致等关键问题中的技术逻辑,并展望基于大模型的智能清洗范式演化。Completeness(完整性)

移动开发前沿的博客 403

Lock wait timeout exceeded; try restarting transaction

针对以上问题 执行下面的Sql语句 INNODB_TRX表主要是包含了正在InnoDB引擎中执行的所有事务的信息,包括waiting for a lock和running的事务SELECT * FROM information_schema.INNODB_TRX; 出现下面的情况 执行下面Sql语句查询当前死锁的信息,经数据分析是由上面的 trx_mysql_thread_id...

weixin_34259559的博客 145

Arcgis栅格裁剪批处理工具

Arcgis栅格裁剪批处理工具

yilvyangguang520的博客 2172

MySql事物被死锁解决办法

出现:Lock wait timeout exceeded;try restarting transaction错误时 这时候只需要去mysql中查两个语句,然后杀掉对应的死锁线程就行: 1.查询mysql所有正在执行的sql,看到query就说明是正在执行的,有时候慢查询导致程序卡住无响应也可以这么查杀 show processlist; kill id; 2.查看mysql事物表I...

一个抽风的女Ren的博客 800

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Lock wait timeout exceeded; try restarting transaction

try restarting transaction” 是 MySQL 中常见的错误,通常表示在事务执行过程中,等待锁的时间超过了系统设定的默认锁定超时时间。

喝醉酒的小白 5114

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Lock wait timeout exceeded; try restarting transaction 问题解析

微信公众号:程序媛的非程序人生 关注可了解更多资讯。问题或建议,请公众号留言; 一、问题 ### Cause: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction; 现象:接口响应时间超长,耗时几十秒才返回错误提示,后台日志中出现Lock wait timeout exceeded...

weixin_33825683的博客 1万+

解决异常【MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction】

错误日志: org.springframework.dao.CannotAcquireLockException: ### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Lock wait timeout exceeded; try res...

第二颗大白菜 2万+

Lock wait timeout exceeded; try restarting transaction的错误

一直处于锁等待状态,直到超时报错。因为使用的数据库为mysql,而InnoDB表类型会出现锁等待的情况,在出现锁等待时,会根据参数innodb_lock_wait_timeout(默认50s)的配置,判断是否需要进行timeout的操作,如果等待时间超过了设置的时间就会报错。本次问题是因为update语句导致的锁表,因为是在疲劳测试(压测12小时)过程中出现的问题,使用10并发进行压测,每秒差不多15笔申请调用,所以上述的1234都不符合,查看发现mysql资源不足,内存达到100%,确认实际异常原因。

爱思考的People 1626

Mysql 异常:Lock wait timeout exceeded; try restarting transaction的解决办法

问题现象   接口响应时间超长,耗时几十秒才返回错误提示,后台日志中出现Lock wait timeout exceeded; try restarting transaction的错误 <-- java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)

Hello World 1万+

Mysql 异常:Lock wait timeout exceeded; try restarting transaction

Mysql 异常:Lock wait timeout exceeded; try restarting transactionLock wait timeout exceeded; try restarting transaction错误日记Cause: java.sql.SQLException: Lock wait timeout exceeded; try restarting transa...

凌飞安 4万+

Lock wait timeout exceeded; try restarting transaction解决方案

今天程序里报的错: java.sql.BatchUpdateException: Lock wait timeout exceeded; try restarting transaction,重启服务后也没有效果,然后查看mysql官方文档如下: Error: 1205 SQLSTATE: HY000 (ER_LOCK_WAIT_TIMEOUT) Message: Lock wait timeou...

ProgramVAE的博客 3万+

mysql 提示Lock wait timeout exceeded; try restarting transaction(转载网上)

Lock wait timeout exceeded; try restarting transaction 原创MySQL作者:贺子_DBA时代时间:2018-01-23 22:15:023424316777215 一:问题分析 : 今天程序里报的错: java.sql.BatchUpdateException: Lock wait timeout exceeded; try restarting transaction,重启服务后也没有效果,然后查看mysql官方文档如下: Err...

zy103118的博客 6055

mysql锁表:Lock wait timeout exceeded; try restarting transaction

转载来自:http://blog.itpub.net/29654823/viewspace-2150471/ 一:问题分析 : 今天程序里报的错: java.sql.BatchUpdateException: Lock wait timeout exceeded; try restarting transaction,重启服务后也没有效果,然后查看mysql官方文档如下: Error:12...

那又怎样?的博客 6654
上一篇: maven进阶——开发自定义插件
下一篇: java命令执行jar包的多种方法(四种方法)
shadow_zed
博客等级 码龄10年 6289粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值