前言

时间流逝比较快,博主也在快马加鞭学习SQL Server,下班回来再晚也不忘记更新下博客,时间挤挤总会有的,现在的努力求的是未来所谓的安稳,每学一门为的是深度而不是广度,求的是知识自成体系而不是零散,废话不多说本节我们来讲讲SQL Server基础系列最后几节内容,这话博主说了n次,呵呵。

NOLOCK和READPAST

NOLOCK

随便翻翻博客园对于各种锁的介绍真的是一个字【多】,仅仅介绍其概念,再要么就是转载其概念,不知道那些转载概念的园友是否已经弄懂了,稍微发下感慨。NOLOCK在概念上类似于READ UNCOMMITTED隔离级别,并且只针对于SELECT查询语句,它不会获取表的共享锁,换句话说不会阻止排它锁来更新数据行。当我们对表进行NOLOCK有什么好处呢?它能够提高并发性能,因为此时SQL Server数据库引擎不必去维护共享锁,由于不会对正在读取的表获取贡献锁,所以可能导致未提交的事务也会被读取,所以此时缺点显而易见将导致脏读,至于脏读是何含义则无需我再多讲。我们重点的明白什么情况下应该用NOLOCK。我们看下实际例子来理解NOLOCK,建立测试表并插入300条测试数据:

移动开发培训,Android培训,安卓培训,手机开发培训,手机维修培训,手机软件培训

IF OBJECT_ID('Example')>0      DROP TABLE Example;

GO

CREATE TABLE [dbo].[Example]

(      
      [SaleID] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,      
      [Product] [char](150) NULL,      
   &nbs