Delete In SELECT 的事务导致死锁问题
链接:https://stackoverflow.com/questions/15073547/avoid-deadlock-for-concurrent-delete
测试了4是可行的。
(1) 你应该停止使用read uncommitted隔离。至少使用read committed.
(2) 您可以尝试避免死锁的方法有很多,例如确保不同的事务以相同的顺序访问数据库对象等。这值得一读 - http://support.microsoft.com/kb/ 169960
(3) 为你的表禁用锁升级(更细粒度的锁所以更好的并发性,但更多的锁开销):
ALTER TABLE Products SET (lock_escalation = disable)
(4) 禁止页锁,并允许对索引使用行锁(这意味着您不能对索引进行碎片整理,但您仍然可以重建它们):
ALTER INDEX [<YourIndex>] ON Product set (allow_row_locks = on, allow_page_locks = off)

浙公网安备 33010602011771号