时间:2021-07-01 10:21:17 帮助过:4人阅读
第一次调用时,marketingId传入值顺序: 1,3,5,12 第二次调用时,marketingId传入值顺序:1,2,5,3 每次update时,会锁行。 那么第一次调用时,顺序锁行,当更新完3,准备跟新5的时候,发现5已经被第二次调用锁行了,就等待。而此时的第二次调用刚好跟新完5准备去拿3的锁,却发现被第一次调用占有,于是就出现死锁。 所以,我们要在批量更新,删除操作的时候,按照一个固定的顺序来排序,然后进行操作。 前面的例子,如果按照marketingId从小到大排序,就会变成: 第一次调用时,marketingId传入值顺序: 1,3,5,12 第二次调用时,marketingId传入值顺序:1,2,3,5 如此,就避免了死锁的发生。
数据库update死锁
标签: