sql – NOLOCK和UNCOMMITTED之间有什么区别?

我使用SQL Server 2012.

我写了两个查询,但NOLOCK和UnCommitted之间有什么区别?

SELECT lastname, firstname
FROM HR.Employees with (READUNCOMMITTED)

SELECT lastname, firstname 
FROM HR.Employees with (NoLock)
最佳答案
NOLOCK:相当于READUNCOMMITTED(来源:MSDN)

NOLOCK或READUNCOMMITTED指定允许脏读.不会发出共享锁,以防止其他事务修改当前事务读取的数据,而由其他事务设置的独占锁定不会阻止当前事务读取锁定的数据.允许脏读取可能导致更高的并发性,但是以读取数据修改为代价,然后被其他事务回滚

READUNCOMMITTED和NOLOCK提示仅适用于数据锁.所有查询(包括具有READUNCOMMITTED和NOLOCK提示的查询)在编译和执行期间获取Sch-S(模式稳定性)锁.因此,当并发​​事务在表上保存Sch-M(模式修改)锁时,查询被阻止

转载注明原文:sql – NOLOCK和UNCOMMITTED之间有什么区别? - 代码日志