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)
posted @ 2021-09-15 14:38  mimo0  阅读(192)  评论(0)    收藏  举报