回答

收藏

NOLOCK和UNCOMMITTED有什么区别

技术问答 技术问答 485 人阅读 | 0 人回复 | 2023-09-14

我使用SQL Server 2012。
* m8 a% t& O1 ^) d我写了两个查询,但是NOLOCK和之间有什么不同UnCommitted?
$ z7 Y) f- ~) K$ I( V8 LSELECT lastname, firstname$ j9 ^: \" q# f* t
FROM HR.Employees with (READUNCOMMITTED)
& h2 m$ |; u: \5 X( A+ I) }SELECT lastname, firstname
' @4 F' U- K2 d7 M/ ]8 j  w' @FROM HR.Employees with (NoLock)1 P. v; N7 @0 V% ^
               
1 Y) g- c% N+ U" y$ c" @1 c解决方案:
+ W1 X& B$ D, @! u! @  ~               
& D# B7 K; `" N' u; A& s/ s
/ L2 S; F( j0 n, D/ t; s: }1 l
6 h2 S3 r: [' `% d                NOLOCK: 相当于READ UNCOMMITTED(来源: MSDN! ]9 D: |7 I+ }1 z
NOLOCK或READ
( I/ Y8 A# H0 D; h# fUNCOMMITTED指定允许脏读取。没有发出共享锁来防止其他事务修改当前事务读取的数据,并且其他事务设置的互斥锁不会阻止当前事务读取锁定的数据。允许脏读取可能会导致更高的并发性,但代价是读取数据修改,然后其他事务将其回滚, ^1 q1 T% t2 t
READ UNCOMMITTED并NOLOCK提示仅适用于数据锁。所有查询(包括那些with READ UNCOMMITTED and6 G3 _# s* w: B# m0 v
NOLOCK提示)在编译和执行期间均获得Sch-S(模式稳定性)锁。因此,当并发??事务在表上持有Sch-M(架构修改)锁时,查询将被阻止
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则