前言
上一篇SQL Server詳細(xì)講解了隔離級(jí)別,但是對基于行版本中的SNAPSHOT隔離級(jí)別仍未完全理解,本節(jié)再詳細(xì)講解下,若有疑義或不同見解請?jiān)谠u論中提出,一起探討。
SNAPSHOT行版本隔離級(jí)別
在SNAPSHOT隔離級(jí)別下,讀取者在讀取數(shù)據(jù)時(shí), 它是確保獲得事務(wù)啟動(dòng)時(shí)最近提交的可用行版本,這意味著,保證獲得的是提交后的讀取并且可重復(fù)讀取,以及確保獲得不是幻讀,類似于SERIALIZABLE級(jí)別中一樣,但是此隔離級(jí)別依賴于行版本,而不是使用共享鎖,要想在企業(yè)部署的SQL Server實(shí)例中允許事務(wù)以SNAPSHOT隔離級(jí)別工作,首先需要在查詢窗口執(zhí)行以下代碼打開快照隔離級(jí)別。如下:
ALTER DATABASE TSQL2012 SET ALLOW_SNAPSHOT_ISOLATION ON
下面我們再用一個(gè)簡單的例子來詳細(xì)講解其過程。首先我們啟用上述SNAPSHOT隔離級(jí)別,然后查詢某個(gè)表的修改日期列,如下:
ALTER DATABASE AdventureWorks2012 SET ALLOW_SNAPSHOT_ISOLATION ON GO SELECT ModifiedDate FROM HumanResources.Shift GO