问题1:

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

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

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

 

问题2:

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

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

 

 

测试问题1

测试事务死锁

 

并发更新引发的死锁问题

 

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

并发更新引发的死锁问题

 

 

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

并发更新引发的死锁问题

 

异常信息:

 

并发更新引发的死锁问题

 

相关文章:

  • 2021-11-16
  • 2021-07-26
  • 2021-12-16
  • 2021-10-28
  • 2022-12-23
  • 2021-05-30
  • 2021-12-31
猜你喜欢
  • 2022-01-12
  • 2021-09-02
  • 2021-07-19
  • 2021-12-29
  • 2021-10-02
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案