Sqlserver事務隔離級別詳解

sqlserver存儲方式sql

          頁   併發

        sqlserver是以頁的形式存儲數據,每一個數據頁的大小爲8KB,sqlserver會把空間分爲多個頁,sqlserver與數據交互單位最小的io操做就是頁級別。(頁的類型有數據頁,索引頁等sqlserver

           區spa

          八個連續的頁會組合成一個區,區的最少是由八個連續的頁組成。server

      

事務隔離級別blog

       1.READ UNCOMMITTED  容許全部髒讀,不可重複讀和幻讀索引

       2.READ COMMITTED       不容許髒讀,但容許不可重複讀和幻讀事務

       3.REPEATABLE READ     不容許髒讀、不可重複讀,但容許幻讀同步

       4.SERIALIZABLE              事務串行化io

事務併發引起的問題

  1.髒讀

     例如當事務A對訂單剩餘量(100個)作了修改(減去1個),此時事務B進行獲取到的訂單剩餘量是(99個),事務A此時又對該訂單進行了回滾,那麼事務B剛纔獲取到的訂單剩餘量(99個)就是屬於髒讀。

  2.幻讀

    幻讀主要是在數據刪除和添加的時候引起的問題,例如事務A獲取訂單表總記錄數爲(10條),此時事務B刪除了一條記錄(9條),那麼事務A再次去獲取訂表數據的時候就會發現只剩下(9條)數據,這種操做對於事務A來講就至關於出現幻覺。

  3.不可重複讀

   跟幻讀的區別是幻讀針對的是刪除和添加的動做,不可重複讀通常針對修改,例如事務A獲取訂單剩餘量爲(10個),此時事務B對訂單作了修改去掉1個(剩餘9個),事務A再次獲取的時候就是(9條),事務A先後兩次讀取數據值不同。

 4.丟失更新

   事務A獲取訂單剩餘量爲(10個),此時事務B也同步獲取到訂單剩餘量爲(10個),事務A修改訂單剩餘量-1,此時訂單剩餘量爲(9個),而且提交事務,事務B修改訂單剩餘量-1,此時訂單剩餘量爲(9個),也提交事務,此時訂單剩餘量應該爲(8個)的可是實際剩餘量確實(9個

1.髒讀

 

2.不可重複讀

3.幻讀

 

4.丟失更新

相關文章
相關標籤/搜索