mssql sqlserver nolock 关键字简介


摘要:
下文主要讲述避免资源竞争的数据读取方式 nolock的用法


目录
nolock功能简介
nolock应用举例



nolock功能简介


在sql脚本编写中,我们常常使用 nolock、with(nolock)关键字进行查询时,
此查询可以在不锁表的情况下获取表数据,从而使查询速度得到提升。
由于没有锁定表,所以使用nolock获取数据时,可能出现以下现象:


1.1 幻读
用户获取数据表时,可能出现第一次查询数据表中无相关记录,过一会再查询数据行又在数据表中的奇特现象


1.2 脏读
当我们获取数据表时,用户此时正在修改数据,但还未修改完毕,我们获取的数据可能是修改后的数据,但由于其它原因用户修改失败,那么此时我们获取的数据就同用户的实际数据不一致


 


nolock应用举例

2.1 nolock举例应用

 select [列名1],[列名2],[列名3] from [表名](nolock) 
 或
 select [列名1],[列名2],[列名3] from [表名] with(nolock) 

 
2.2 nolock应用场景
数据量非常大,并且允许出现脏读的业务表,常常应用于论坛,新闻资讯类网站


2.3 nolock with(nolock)区别简介
2.3.1 在sql 2008 中 两种写法都支持,
2.3.2 在跨服务器查询数据时,不能使用 with(nolock)写法,此时只可使用(nolock)写法