博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MYSQL Deadlock问题
阅读量:2353 次
发布时间:2019-05-10

本文共 668 字,大约阅读时间需要 2 分钟。

可以参考这篇文章进行排查:

解决方案

  • 减小事务中的语句数量(代码的事务涉及行数过多,锁范围太大,很容易造成死锁)
  • 在业务中调整语句的执行顺序,例如可以按照where条件中字段的大小进行一下排序,按照排序后顺序执行,让死锁变为锁等待。

也可以采用重试机制:

在Application.class加上@EnableRetry

//LockAcquisitionException是RuntimeException @Retryable(maxAttempts = 4, value = RuntimeException.class, backoff = @Backoff(delay = 500)) public void doSomethingWithMysql() {   consumerTransactionTemplate.execute(             new TransactionCallbackWithoutResult(){                @Override                protected void doInTransactionWithoutResult(                                       TransactionStatus status)                {                    process();                }            }); }

Ref: db80的回答

转载地址:http://ciztb.baihongyu.com/

你可能感兴趣的文章
python3 + selenium------Chrome和Firefox 驱动的使用和版本对应
查看>>
pycharm不同测试框架的设置、unittest测试案例
查看>>
python unittest TestCase间共享数据(全局变量的使用)
查看>>
Python中普通字符串 & json字符串&json对象的区别
查看>>
python中json.dumps()和json.dump() 以及 json.loads()和json.load()的区分
查看>>
Python3中打开文件的方式(With open)
查看>>
python中unittest加载测试用例的4种方法
查看>>
iOS中使用RNCryptor对资源文件加密
查看>>
Device Tree编译工具dtc
查看>>
softlockup/hardlockup原理详细介绍
查看>>
项目管理学习笔记之八风险管理过程总结
查看>>
项目管理学习笔记之九采购管理过程总结
查看>>
solaris常用命令总结
查看>>
邮件安全证书(S/MIME),如何申请邮件证书
查看>>
Go语言基础入门--简介
查看>>
Go语言基础入门--变量,类型
查看>>
Go语言基础入门--数组,切片,map
查看>>
Go语言基础入门--if,for,range,switch
查看>>
Go语言基础入门--函数,错误处理
查看>>
VIM 学习系列之基本命令,常用命令
查看>>