Lock wait timeout exceeded; try restarting transaction解决
前言
服务报错:
Lock wait timeout exceeded; try restarting transaction
排查
字面意思 锁等待超时了,尝试重启事务。
既然是数据库死锁,着手排查数据库死锁信息
查看最近死锁的日志
show engine innodb status
在打印出来的信息中找到“LATEST DETECTED DEADLOCK”一节内容
分析其中的内容,我们就可以知道最近导致死锁的事务有哪些
通过sql匹配到具体的代码块发现,该方法使用了事务
@Transactional(rollbackFor = Exception.class)
,但该方法时单表更新,无需事务
因更新前有大量的查询操作导致事务时间超长
解决
去除只读事务和单表事务,问题解决
复盘
通过日志信息得出数据库死锁,再排查到相关业务代码,因事务中含有大量耗时查询导致事务超时,无法更新导致死锁
尽量减少@Transactiona注解使用,如需使用尽量事务粒度细化可使用
@Autowired
private TransactionTemplate transactionTemplate;
总结
少用@Transactional及只读事务
事务中避免一次性处理太多数据
如需使用事务尽量细化
异步处理非事务代码
扩展
死锁信息查看
1、查看正在进行中的事务 SELECT * FROM information_schema.INNODB_TRX
2、查看正在锁的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
3、查看等待锁的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
4、查询是否锁表 SHOW OPEN TABLES where In_use > 0;
5、查看最近死锁的日志 SHOW ENGINE INNODB STATUS
解除死锁
解除死锁
查看当前正在进行中的进程
show processlist
也可以使用 SELECT * FROM information_schema.INNODB_TRX;
这两个命令找出来的进程id 是同一个。 杀掉进程对应的进程
kill id
@Transactional(readOnly = true)
@Transactional(readOnly = true)注解,申明为只读事务。
多条查询下要使用该注解,能够防止多次查询到的数据不一致(维持可重复读)。
在将事务设置成只读后,当前只读事务就不能进行写的操作,否则报错。如下
Cause: java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed;
事务粒度细化
新加Service方法
@Servciepublicclass ServiceA {@Autowiredprvate ServiceB serviceB;public void save(User user) {queryData1();queryData2();serviceB.doSave(user);}}@Servciepublicclass ServiceB {@Transactional(rollbackFor=Exception.class)public void doSave(User user) {addData1();updateData2();}}
在该Service类中注入自己
@Servcie
publicclass ServiceA {@Autowiredprvate ServiceA serviceA;public void save(User user) {queryData1();queryData2();serviceA.doSave(user);}@Transactional(rollbackFor=Exception.class)public void doSave(User user) {addData1();updateData2();}}
重要的东西全部都在半径三米以内
Lock wait timeout exceeded; try restarting transaction解决相关推荐
- mysql死锁释放时间参数_【Mysql】mysql 事务未提交导致死锁 Lock wait timeout exceeded; try restarting transaction 解决办法...
问题场景 问题出现环境: 1.在同一事务内先后对同一条数据进行插入和更新操作: 2.多台服务器操作同一数据库: 3.瞬时出现高并发现象: 不断的有一下异常抛出,异常信息: org.springfram ...
- 数据库 1205 Error 'Lock wait timeout exceeded; try restarting transaction' on query
收到报警,mysql的从数据库在同步的过程出现问题,已停止同步. mysql> show slave status\G *************************** 1. row ** ...
- 关于MySQL出现`lock wait timeout exceeded; try restarting transaction` 的解决方案
关于MySQL出现lock wait timeout exceeded; try restarting transaction 的解决方案. 一.问题抛出 在做查询语句时,MySQL 抛出了这样的异常 ...
- 关于MySQL出现锁等待lock wait timeout exceeded; try restarting transaction 的解决方案
关于MySQL出现lock wait timeout exceeded; try restarting transaction 的解决方案. 一.问题抛出 在做查询语句时,MySQL 抛出了这样的异常 ...
- 【问题解决:死锁】Lock wait timeout exceeded; try restarting transaction的问题
执行数据删除操作时一直超时并弹出Lock wait timeout exceeded; try restarting transaction错误 解决办法 1.先查看数据库的事务隔离级别 select ...
- Lock wait timeout exceeded; try restarting transaction
排查过程: 查看数据库 INNODB_LOCKS,未发现有死锁的记录. 查看 SHOW PROCESSLIST; 也未见异常进程: 通过Mysql的控制台,查询慢日志,也未找到有关此表的Mysql慢日 ...
- 排查mysql innodb Lock wait timeout exceeded; try restarting transaction的问题
转载自:https://www.cnblogs.com/piperck/p/6212524.html OMG写的时候崩溃了一次. 触发关注这个问题的事情是 我们在使用pt-online-schedul ...
- mysql 中lock wait_应用中MYSQL 报错Lock wait timeout exceeded; try restarting transaction
最近开发的应用开始做性能测试.在小于80用户并发的时候一切OK,并发量到100用户时,持续压5分钟.应用开始报错,并且只有1次错误,持续时间长,比如10分钟,会报3次. 日志如下: Caused by ...
- 'Lock wait timeout exceeded; try restarting transaction'问题
OperationalError: (1205, 'Lock wait timeout exceeded; try restarting transaction') 原因很简单,太多错误,意外处理没有 ...
- MySQL -- Lock wait timeout exceeded; try restarting transaction参数控制
Lock wait timeout exceeded; try restarting transaction 锁等待超时..回滚事务.. 当事务1 获得锁 start TRANSACTION upd ...
最新文章
- 2019年春季学期第七周作业
- kali - Nmap
- 【转】Xcode 7 真机调试详细步骤
- selenium+chromeheadless爬取网站
- java关于贪吃蛇的源代码_完整的贪吃蛇(蛇吃蛋)Java源代码
- 编辑器图片上传 linux,summernote 富文本编辑器上传本地图片
- html中右边框出不来,html,为什么右边框会被挡住?
- 保研论坛app服务器网站,保研论坛官网版app
- director 3d tank
- 深度linux升级,测试从Deepin Linux 15升级到Deepin Linux v20
- A7芯片 IOS降级 跳过ID | ipad Mini2降级 10.3.3
- 基于遗传算法的柔性车间调度优化(Matlab代码实现)
- 深度学习与计算机视觉教程(7) | 神经网络训练技巧 (下)(CV通关指南·完结)
- 【盘点】电影中八大邪恶的超级计算机
- 数显之家快讯:【SHIO世硕心语】SHIO世硕科技企业文化宣言知多少?
- Java语言基础Day07(API概述、Scanner、匿名对象、Random、对象数组、ArrayList)
- 10 大话设计模式C++实现之模板方法模式
- win10家庭版调出组策略(gpedit.msc)要求的函数不受支持
- 计算机硬件系统一直延用,会计从业考试:会计电算化计算机硬件系统
- HNU-电子测试平台与工具-数字密码锁实验报告