Sqlserver事務隔離級別詳解

2022-01-16 08:35:08 字數 1654 閱讀 5440

sqlserver儲存方式

sqlserver是以頁的形式儲存資料,每個資料頁的大小為8kb,sqlserver會把空間分為多個頁,sqlserver與資料互動單位最小的io操作就是頁級別。(頁的型別有資料頁,索引頁等)

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

事務隔離級別

1.read uncommitted  允許所有髒讀,不可重複讀和幻讀

2.read committed       不允許髒讀,但允許不可重複讀和幻讀

3.repeatable read     不允許髒讀、不可重複讀,但允許幻讀

4.serializable              事務序列化

事務併發引發的問題

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.丟失更新

SQL Server 事務隔離級別

1 sql server 的 5個標準事務隔離級別分別是 read uncommitted,read committed,repeatable read 和 serializable,snapshot.sql server 使用鎖來實現隔離級別。下面使用 gif 動畫對 sql server 前4 ...

SQL Server事務隔離級別

1 首先是如何檢視sql server的事務的隔離級別 命令 dbcc useroptions 結果如下圖所示 2 如何修改資料庫的事務隔離級別,5中隔離級別的設定 set transaction isolation level read committed set transaction isol...

SQLServer事務隔離級別

資料庫中的事物是具有原子性 atomicity 一致性 consistemcy 隔離性 isolation 永續性 durability 四個特徵。1 原子性 atomicity 事務中的全部操作在資料庫中是不可分割的,要麼全部完成,要麼全部不執行。2 一致性 consistency 幾個並行執行的...