SQLserver鎖和事務隔離級別

2022-03-21 07:41:05 字數 1939 閱讀 2595

隔離級別

隔離級別

髒讀不可重複讀

幻象說明

未提交讀(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 隔離性 由併發事務所做的修改必須與其他併發事務所做的修改隔離。由於事務在開始時就會識別資料所處的狀態,以便發生錯誤時可以回滾操作,所以另乙個併發事務要麼修改它之...