猿来如此
2017-09-20
关于SqlServer中的NOLOCK
在我们系统的sql查询代码中,经常可以看到select之后会加一个NOLOCK的关键字,但是至于这个关键字是什么意思,问了下大家一般也就是说“禁用读写锁,可以提升查询性能”,但是真正深层次的原因却不清楚,查询了下相关资料然后整理了下分享给大家。
nolock是什么
nolock是 SQL Server 的一个关键字,这类关键字官方将其称之为 Hints。 Hints 的设计目的是为了能够让 SQL 语句在运行时,动态修改查询优化器的行为。 在语法上,Hints 以WITH开头。除了WITH(nolock), 还有TABLOCK/INDEX/ROWLOCK等常见的 Hints。 MSDN文档上的解释是这样的:
nolock的作用等同于READUNCOMMITTED
READUNCOMMITTED这是一种 RDBMS 隔离级别。 使用nolock这个关键词,可以将当前查询语句隔离级别调整为READ UNCOMMITTED。
下面来介绍下什么是隔离级别:
隔离级别
隔离级别主要有四种,其隔离程度由高到低是:
- 可序列化(Serializable)
- 可重复读(Repeatable reads)
- 提交读(Read committed)
- 未提交读(Read uncommitted)
隔离级别主要解决的问题是加一个针对数据资源的锁,从而保证数据操作过程中的一致性。...
4393
5