<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

    blog已經轉移至github,大家請訪問 http://qaseven.github.io/

    實例演示SQL Server中五個事務隔離的區別

      網上里有很不錯的介紹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分配的資源也最小。

     2、READ COMMITTED,提交讀,默認的事務隔離級別,會造成不可重復讀。

      初始化:

    drop Table tranlevel

    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)

      Query3:

    SET TRANSACTION ISOLATION LEVEL READ COMMITTED

    BEGIN TRAN Query3

    -- 等待10秒,再修改數據

    WAITFOR DELAY '00:00:10'

    UPDATE TranLevel SET val = 10

    COMMIT TRAN Query3

      Query 4:

    SET TRANSACTION ISOLATION LEVEL READ COMMITTED

    BEGIN TRAN Query4

    SELECT '查到的是Query3沒有提交前的數據'

    SELECT * FROM TranLevel

    SELECT '讓Query3執行完'

    WAITFOR DELAY '00:00:10'

    SELECT '再次查詢,數據就變成Query3執行完后的數據了'

    SELECT * FROM TranLevel

    COMMIT TRAN Query4

      執行Query3后,新建查詢執行Query4。下面看看Querry4查詢得到的數據。

      結果就是Query4中的事務查詢獲得了在Query3提交后的數據,在同一事務中讀取的數據不一致,造成了不可重復讀。

    posted on 2013-05-24 10:27 順其自然EVO 閱讀(209) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2013年5月>
    2829301234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    導航

    統計

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产vA免费精品高清在线观看| 一级黄色片免费观看| 国产亚洲一卡2卡3卡4卡新区 | 美女被艹免费视频| 国产免费AV片在线观看播放| 日韩精品免费视频| 日韩版码免费福利视频| 又黄又爽一线毛片免费观看 | 四虎影在线永久免费四虎地址8848aa| 亚洲男人第一无码aⅴ网站| 亚洲精品一品区二品区三品区| 久久久久亚洲AV无码专区体验| 香蕉大伊亚洲人在线观看| 高清免费久久午夜精品| 久热免费在线视频| 免费观看一级毛片| 国产亚洲精品a在线无码| ww亚洲ww在线观看国产| 一级毛片免费播放视频| **一级一级毛片免费观看| 免费观看a级毛片| 亚洲国产精品成人精品无码区在线| 亚洲国产电影在线观看| 四虎永久在线精品免费一区二区| 日韩精品极品视频在线观看免费| 香蕉高清免费永久在线视频| 国产亚洲自拍一区| 亚洲AV无码乱码麻豆精品国产| 国产成人亚洲精品播放器下载| 无码中文字幕av免费放dvd| 国产精品二区三区免费播放心 | 亚洲无人区码一二三码区别图片 | 色www免费视频| 97国产在线公开免费观看| 国产大片线上免费看| 久久精品国产亚洲AV嫖农村妇女| 青草久久精品亚洲综合专区| 99精品视频在线观看免费播放| 国产人成免费视频| 亚洲乱码一二三四区国产| 无码日韩人妻AV一区免费l|