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...