并发更新引发的死锁问题


问题1:

最近看到一条面试题:并发更新同一条记录如何解决事务死锁?

参考:并发更新引发的死锁问题排查

解决方法:高并发程序,都不应该存在仅根据非主键的几个字段一查就要update/delete的场景。即使有,也应该改为先把要更新的记录查出来然后逐条按主键id更新。

 

问题2:

参考:并行事务同时更新同一条记录

最后,总结并行事务第一个事务会锁住更新的记录,下一个事务操作(更新或删除)该记录时排队等待上一个事务释放锁,如果等待过长会取消操作,并且抛出异常,捕获异常进行相应的操作回滚事务或关闭连接释放锁,不然会导致死锁。并且上一个事务提交之后,下一个事务的回滚不会影响到上一个事务的操作。

 

 

测试问题1

测试事务死锁

 

 

每次插入数据插入200条数据 username=test

 

 

都是for循环修改那200条数据

 

异常信息:

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM