前言

時間流逝比較快,博主也在快馬加鞭學習SQL Server,下班回來再晚也不忘記更新下博客,時間擠擠總會有的,現(xiàn)在的努力求的是未來所謂的安穩(wěn),每學一門為的是深度而不是廣度,求的是知識自成體系而不是零散,廢話不多說本節(jié)我們來講講SQL Server基礎系列最后幾節(jié)內容,這話博主說了n次,呵呵。

NOLOCK和READPAST

NOLOCK

隨便翻翻博客園對于各種鎖的介紹真的是一個字【多】,僅僅介紹其概念,再要么就是轉載其概念,不知道那些轉載概念的園友是否已經弄懂了,稍微發(fā)下感慨。NOLOCK在概念上類似于READ UNCOMMITTED隔離級別,并且只針對于SELECT查詢語句,它不會獲取表的共享鎖,換句話說不會阻止排它鎖來更新數(shù)據(jù)行。當我們對表進行NOLOCK有什么好處呢?它能夠提高并發(fā)性能,因為此時SQL Server數(shù)據(jù)庫引擎不必去維護共享鎖,由于不會對正在讀取的表獲取貢獻鎖,所以可能導致未提交的事務也會被讀取,所以此時缺點顯而易見將導致臟讀,至于臟讀是何含義則無需我再多講。我們重點的明白什么情況下應該用NOLOCK。我們看下實際例子來理解NOLOCK,建立測試表并插入300條測試數(shù)據(jù):

移動開發(fā)培訓,Android培訓,安卓培訓,手機開發(fā)培訓,手機維修培訓,手機軟件培訓

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