SQL Server中五個事務隔離有什麼區別

來源:互聯網
上載者:User

園子裡有很不錯的介紹SQL Server事務隔離的文章,感覺很多都從概念入手介紹的,對那些初學者來說,看得見摸得 著的理解才深刻,故不再重複,重點在於執行個體示範上面。

首先解釋下事務隔離是幹什麼的,一個事務的隔離等級控制了它怎麼樣影響其它事務和被其它事務所影響。

1.READ UNCOMMITTED,會導致髒讀(能讀取其它事務沒有提交的更改)和不可重複讀取(事務讀取的資料被其它事務 所修改,再次讀取時不一致)

初始化:

CREATE TABLE TranLevel (k int IDENTITY(1,1), val int)    INSERT INTO TranLevel(val) values(1)    INSERT INTO TranLevel(val) values(2)    INSERT INTO TranLevel(val) values(3)

首先執行Query1,再建立查詢立即執行Query2

Query1:

BEGIN TRAN Query1    -- 在事務中修改    UPDATE TranLevel SET val = 9    --  '等待10秒,期間事務2運行'    WAITFOR DELAY '00:00:10'    -- 不提交修改,復原事務    ROLLBACK TRAN Query1

Query2:

-- 設定當前會話交易隔離等級為未提交讀    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED    BEGIN TRAN Query2    SELECT '事務2開始並發執行,讀取到了事務1修改了但沒有提交的資料,是髒讀'    SELECT * FROM Tranlevel    SELECT '事務2等待10秒,讓事務1執行完'    WAITFOR DELAY '00:00:10'    SELECT '兩次讀取的結果不一致,是不可重複讀取'    SELECT * FROM TranLevel    COMMIT TRAN Query2

下面就看看Query2執行的結果是怎樣的:

結果顯而易見,如果將交易隔離等級設定為未提交讀,則會造成髒讀和不可重複讀取的問題,在這幾個交易隔離等級中 是限制最小的一個,SQL Server分配的資源也最小。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.