本文主要是介绍yt零售系统订单死锁原因,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
知识前提:
InnoDB引擎在加锁的时候,只有通过索引进行检索的时候才会使用行级锁,否则会使用表级锁。
场景:
在订单服务中,开起事务,对同一张表,先更新(无索引),再新增,发生死锁。
原因:
同一线程,更新事务未提交,因为无索引导致了表锁,再新增的时候当前线程等待更新释放锁,会把当前线程挂起来,而锁正是被自己占用,该线程又被挂起而没机会释放锁。
解决方法:
更新的时候在检索列创建索引,这样就会行锁,不会发生表锁。
这篇关于yt零售系统订单死锁原因的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!