我需要在 sql server 表上执行更新语句。该表同时被另一个进程使用。因为有时会发生死锁,您建议使用哪种隔离级别来避免或尽量减少这些死锁?
问问题
12761 次
4 回答
2
在这里使用 READ UNCOMMITTED 的建议是可以的,但它们确实回避了为什么你首先会陷入僵局的问题。如果您不关心脏读,那很好,但如果您需要隔离(一致性等)的好处,那么我建议您在应用程序中找出适当的锁定策略。
我没有那个问题的答案——我自己一直在制定一些策略。请参阅此问题的评论以进行一些讨论。
于 2010-07-15T17:35:34.870 回答
1
研究快照隔离——使用这种隔离级别是一致性和速度之间的一个很好的折衷。我可能会因为这样说而被击落,但是我相信在这个隔离级别上更难遇到死锁。
这是否是解决僵局情况的正确做法完全是另一回事。
于 2010-07-13T17:24:16.930 回答
1
使用游标或循环批量更新少量行,这样可以避免 SQL Server 升级为表锁。
于 2010-07-13T17:34:01.840 回答