使用“SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED”和NOLOCK之间有什么区别?这个比那个好吗?NOLOCK与事务隔离级别
回答
它们是相同的东西,只是作用域不同。 NOLOCK放置在每个桌子的基础上,并且可以将SET Transaction...
作为块放置。
感谢您的确认! – Jason 2009-06-19 15:48:54
NOLOCK是查询提示,因此仅适用于specifc表中被指定它的查询中。
设置事务隔离级别适用于在当前连接内执行的所有代码,或者直到它被明确修改。
为了澄清,在功能上工作isoloation水平是其上覆盖可能并不相同但是范围。
见that answer从几个小时前,这个问题SQL Server SELECT statements causing blocking。
报价Remus Rusanu:
SELECT可以阻止更新。正确设计的数据模型和查询只会造成最小的阻塞,而不是问题。 “常用”WITH NOLOCK提示几乎总是错误的答案。正确的答案是调整您的查询,以便它不扫描巨大的表。
如果查询不可执行,那么您应该首先考虑SNAPSHOT ISOLATION级别,其次您应该考虑使用DATABASE SNAPSHOTS并且最后一个选项应该是DIRTY READS(并且最好更改隔离级别而不是使用NOLOCK HINT)。请注意,如名称明确指出的那样,脏读将返回不一致的数据(例如,您的总表可能不平衡)。
其他的答案可以帮助你。
它们具有相同的效果,只有一个用作锁提示(NOLOCK),另一个被用于连接范围。
要小心这些 - 脏读取可能是一个非常糟糕的事情取决于您的应用程序。读同一记录两次或因缺少运动页的记录可以是一个非常令人困惑的事情给用户...
- 1. 与LINQ到NOLOCK NOLOCK没有设置事务隔离级别
- 2. WITH(NOLOCK)与SET事务隔离级别未提交读
- 3. SET事务隔离级别
- 4. EJB事务隔离级别
- 5. MySQL事务隔离级别
- 6. PetaPoco事务隔离级别
- 7. 事务隔离级别
- 8. SELECT语句 - NOLOCK与SET TRANSACTION隔离级别READ COMMITTED
- 9. Spring事务隔离级别vs数据库隔离级别的优先级
- 10. ActiveJob/Resque脏读。事务隔离级别
- 11. 事务,设置隔离级别
- 12. MySQL事务隔离级别破坏?
- 13. 事务隔离级别问题
- 14. 如何更改事务隔离级别
- 15. SELECTs的事务隔离级别
- 16. 设置mysql的事务隔离级别
- 17. 了解事务隔离级别
- 18. 事务隔离级别数量庞大
- 19. 事务中的隔离级别
- 20. NHibernate中的子事务隔离级别
- 21. 事务级别,nolock/readpast和并发
- 22. Teradata 14中的事务隔离级别与IsolationLevel.Snapshot密切匹配?
- 23. 如何设置事务隔离级别与DBUnit
- 24. 理解jpa锁与事务隔离级别
- 25. 由事务隔离级别分隔的并发进程死锁
- 26. java.sql.Connection隔离级别
- 27. mysql隔离级别
- 28. 防止事务一致性(事务类型;事务隔离级别)
- 29. SQL服务器隔离级别
- 30. 集成服务和隔离级别
注意`NOLOCK`暗示在2012 MSSQL过时,用等价`READUNCOMMITTED`提示更换。 [来源](http://msdn.microsoft.com/en-us/library/ms187373.aspx)。 – Jeroen 2013-05-12 14:41:12
建议的源代码表示 - 在FROM子句中支持使用UPDATE或DELETE语句的目标表中的READUNCOMMITTED和NOLOCK提示将在未来的SQL Server版本中删除。 `。它不会说`NOLOCK`已被弃用。目前,我相信`NOLOCK`和`READUNCOMMITTED`提示都可用。 – RBT 2016-08-23 10:52:34