我需要在sql server表上执行un update语句,这个表被另一个进程同时使用。因为有时会出现死锁。至于隔离级别,你建议避免或最小化这种僵局?最佳隔离级别,以避免在Sql Server 2005中使用UPDATE语句造成死锁
1
A
回答
8
READ UNCOMMITTED
但是,允许进程来读数据的事务提交之前,被称为脏读。 Further Reading
您可能更愿意打开行版本控制,更新将创建该行的新版本,并且任何其他选择语句都会使用旧版本,直到此版本已提交。为此,请打开READ_COMMITTED_SNAPSHOT模式。还有更多信息here。有一个开销涉及维护行的版本,但它删除UPDATE/SELECT死锁。
1
研究快照隔离 - 使用此级别的隔离是一致性和速度之间的良好折衷。我可能因为这样说而遭到枪杀,但我相信在这个隔离级别上遇到的僵局要困难得多。
这是否是解决死锁问题的正确方法,完全是另一回事。
0
使用游标或循环更新批处理中的少量行,这可以避免SQL Server泄露到表锁。
2
在这里使用READ UNCOMMITTED的建议是可以的,但他们确实会侧重解决为什么首先会陷入僵局的问题。如果你不关心脏读,那很好,但如果你需要隔离(一致性等)的好处,那么我建议在你的应用程序中找出适当的锁定策略。
我没有你的答案 - 我一直在自己制定一些策略。有关讨论,请参阅this question的评论。
相关问题
- 1. 避免并发删除造成死锁
- 2. 使用Crystal Reports的SQL Server 2005:设置事务隔离级别
- 3. UPDATE上的SQL Server死锁
- 4. sql服务器隔离级别和死锁
- 5. Update语句2005
- 6. SQL server 2005死锁情况
- 7. SQL Server 2005:事务死锁
- 8. 如何避免这两个SQL语句之间的死锁?
- 9. Microsoft SQL Server 2005中的默认隔离级别
- 10. SQL Server 2008 R2中的隔离级别
- 11. SQL Server快照隔离级别问题
- 12. 默认SQL Server隔离级别更改
- 13. SQL Server隔离级别问题
- 14. 由事务隔离级别分隔的并发进程死锁
- 15. 在密钥上的SQL Server 2005死锁
- 16. SQL Server 2005和SELECT和UPDATE锁定
- 17. SQL:在REPEATABLE READ隔离级别,UPDATE锁是否保存到事务结束?
- 18. java.sql.Connection隔离级别
- 19. SELECT/UPDATE上的死锁
- 20. 避免死锁和防止死锁有什么区别?
- 21. SQL Server 2000死锁
- 22. MySQL隔离级别,测量它们对死锁的影响
- 23. 死锁只有一个资源和隔离级别Serializable ...?
- 24. SQL Server - 在UPDATE语句中加入
- 25. 如何避免一个容易造成死锁?
- 26. 如何避免简单更新语句的死锁?
- 27. 死锁在SQL Server
- 28. 如何解决由于多线程中的选择和更新语句造成的死锁
- 29. SQL Server中锁 - 避免重复条目
- 30. UPDATE FROM死锁
死锁更难遇到,但如果发生冲突,您将会发生大量UPDATE回滚! – 2010-07-13 17:31:48