前言

上一篇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è)表的修改日期列,如下:

大學(xué)生就業(yè)培訓(xùn),高中生培訓(xùn),在職人員轉(zhuǎn)行培訓(xùn),企業(yè)團(tuán)訓(xùn)

ALTER DATABASE AdventureWorks2012 SET ALLOW_SNAPSHOT_ISOLATION ON
GO

SELECT 
    ModifiedDate
FROM HumanResources.Shift

GO

大學(xué)生就業(yè)培訓(xùn),高中生培訓(xùn),在職人員轉(zhuǎn)行培訓(xùn),企業(yè)團(tuán)訓(xùn)

網(wǎng)友評論