SQL Server 事務隔離級別

2021-06-20 23:43:18 字數 1465 閱讀 7375

1、sql server 的 5個標準事務隔離級別分別是:read uncommitted, read committed, repeatable read 和           serializable,snapshot. sql server 使用鎖來實現隔離級別。

下面使用 gif 動畫對 sql server 前4 個隔離級別進行描述:

2、當多個事務同時進行時,通過設定隔離級別來處理髒讀、不可重複讀、幻讀事件

read uncommitted | 0 未提交讀將查詢的隔離級別指定為 0。

可以讀髒資料

讀髒資料:一事務對資料進行了增刪改,但未提交,有可能回滾,另一事務卻讀取了未提交的資料

read committed | 1 已提交讀(sqlserver 預設級別)

將查詢的隔離級別指定為 1。

避免髒讀,但可以出現不可重複讀和幻讀

不可重複讀:一事務對資料進行了更新或刪除操作,另一事務兩次查詢的資料不一致

幻像讀:一事務對資料進行了新增操作,另一事務兩次查詢的資料不一致

repeatable read | 2 可重複讀

將查詢的事務隔離級別指定為 2。

避免髒讀,不可重複讀,允許幻像讀

serializable | 3 可序列化

將查詢的隔離級別指定為 3。

序列化讀,事務只能乙個乙個執行,避免了髒讀、不可重複讀、幻讀

執行效率慢(我遇到過一種情況,用時是隔離級別1的30倍),使用時慎重

snapshot

當讀取資料時,可以保證讀操作讀取的行是事務開始時可用的最後提交版本。

這意味著這種隔離級別可以保證讀取的是已經提交過的資料,並且可以實現可重複讀,

也能確保不會幻讀。不過這種隔離級別使用的不是共享鎖,而是行版本控制。

sql server 2005以後的版本支援。

下表顯示了不同隔離級別允許的併發***。

隔離級別

髒讀

不可重複讀

虛擬讀取

未提交讀

已提交讀

可重複讀

快照

可序列化

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 幾個並行執行的...

Sqlserver事務隔離級別詳解

sqlserver儲存方式 頁 sqlserver是以頁的形式儲存資料,每個資料頁的大小為8kb,sqlserver會把空間分為多個頁,sqlserver與資料互動單位最小的io操作就是頁級別。頁的型別有資料頁,索引頁等 區 八個連續的頁會組合成乙個區,區的最少是由八個連續的頁組成。事務隔離級別 1...