秀钟爱一生 发表于 2023-9-14 12:11:19

NOLOCK和UNCOMMITTED有什么区别

我使用SQL Server 2012。
我写了两个查询,但是NOLOCK和之间有什么不同UnCommitted?
SELECT lastname, firstname
FROM HR.Employees with (READUNCOMMITTED)
SELECT lastname, firstname
FROM HR.Employees with (NoLock)
               
解决方案:
               


                NOLOCK: 相当于READ UNCOMMITTED(来源: MSDN )
NOLOCK或READ
UNCOMMITTED指定允许脏读取。没有发出共享锁来防止其他事务修改当前事务读取的数据,并且其他事务设置的互斥锁不会阻止当前事务读取锁定的数据。允许脏读取可能会导致更高的并发性,但代价是读取数据修改,然后其他事务将其回滚
READ UNCOMMITTED并NOLOCK提示仅适用于数据锁。所有查询(包括那些with READ UNCOMMITTED and
NOLOCK提示)在编译和执行期间均获得Sch-S(模式稳定性)锁。因此,当并发??事务在表上持有Sch-M(架构修改)锁时,查询将被阻止
页: [1]
查看完整版本: NOLOCK和UNCOMMITTED有什么区别