隔離級別
隔離級別
髒讀不可重複讀
幻象說明
未提交讀(read uncommitted)是是
是如果其他事務更新,不管是否提交,立即執行
提交讀(read committed預設)否是
是讀取提交過的資料。如果其他事務更新沒提交,則等待
可重複讀(repeatable read)否否
是查詢期間,不允許其他事務update
可序列讀(serializable)否否
否查詢期間,不允許其他事務insert或delete
請求模式iss
uixsixx
意向共享(is)是是
是是是否
共享(s)是是
是否否否
更新(u)是是
否否否否
意向排它(ix)是否
否是否否
與意向排它共享(six)是否
否否否否
排它(x)否否
否否否否
鎖
共享鎖:為
了共享讀
(select),如果存在事
務(乙個或多個)擁有
對錶中資料(
關於鎖資料的多少,視鎖的粒度而定)的共享鎖,不允許對鎖定的資料進
行更新(update)
排他鎖:只能有乙個,其他的事務
就不能對鎖定的資料獲取共享鎖和排他鎖(即排他鎖與共享鎖不能相容,更多資訊請檢視鎖相容性),在此特
別強調一下鎖定的資料。
鎖與隔離級別
類型
1
①readuncommitted:不發出
鎖②readcommitted:
發出共享
鎖,保持到讀取
結束③repeatableread:
發出共享
鎖,保持到事務結束
④serializable:
發出共享
鎖,保持到事務結束
類型
2
①nolock:不發出
鎖。等同於
readuncommitted
②holdlock:
發出共享
鎖,保持到事
務結束。等同於
serializable
③xlock:
發出排他
鎖,保持到事
務結束。
④updlock:
發出更新
鎖,保持到事務事
務結束。(更新
鎖:不阻塞
別的事物,允
許別的事物
讀資料(即更新
鎖可與共享
鎖相容),但他確保自上次
讀取資料後資料沒有被更新)⑤
readpast:
發出共享
鎖,但跳
過鎖定行,它不會被阻塞。適用條件:提交讀的
隔離級別,行級
鎖,select
語句中。
類型
3
①rowlock:行級鎖②
paglock:
頁級鎖③
tablock:表鎖④
tablockx:表排他
鎖
SQLserver鎖和事務隔離級別的比較與使用
來自 物件 鎖 每條sql 語句 隔離 事務 鎖 併發問題 丟失更新 未確認的讀取 髒讀 不一致的分析 非重複讀 多次讀取相同的資料 行 不一致 其他使用者更改update 幻像讀 多次讀取有不存在和新增的資料 其他使用者插入insert 或刪除delete 隔離級別 隔離級別 髒讀 不可重複讀取 ...
SQLserver鎖和事務隔離級別的比較與使用
物件 鎖 每條sql 語句 隔離 事務鎖 併發問題 丟失更新 未確認的讀取 髒讀 不一致的分析 非重複讀 多次讀取相同的資料 行 不一致 其他使用者更改update 幻像讀 多次讀取有不存在和新增的資料 其他使用者插入insert 或刪除delete 隔離級別 隔離級別 髒讀 不可重複讀取 幻像 說...
SQL Server(十) 事務和鎖
一 事務的特性 1 原子性 事務必須是原子性的工作單元,要麼全部執行,要麼全部不執行。2 一致性 事務完成時,必須使所有資料保持一致性。3 隔離性 由併發事務所做的修改必須與其他併發事務所做的修改隔離。由於事務在開始時就會識別資料所處的狀態,以便發生錯誤時可以回滾操作,所以另乙個併發事務要麼修改它之...