事務隔離級別

2021-08-26 13:24:16 字數 772 閱讀 5277

事務的隔離級別,採用鎖的機制實現

髒讀 不 可重複讀 幻讀

未提交讀 :

不新增共享鎖。所以其它trasaction b可以在trasaction a對記錄的讀取過程中修改同一記錄,

可能會導致a讀取的資料是乙個被破壞的或者說不完整不正確的資料。

另外,在trasaction a中可以讀取到trasaction b(未提交)中修改的資料。

比如trasaction b對r記錄修改了,但未提交。此時,在trasaction a中讀取r記錄,讀出的是被b修改過的資料。

可能發生的問題:髒讀。

提交讀:

在trasaction a中讀取資料時對記錄新增共享鎖,但讀取結束立即釋放。

其它transaction b對這個記錄的試圖修改會一直等待直到a中的讀取過程結束,

而不需要整個trasaction a的結束。所以,在trasaction a的不同階段對同一記錄的讀取結果可能是不同的。

可能發生的問題:不可重複讀。

可重複讀:

對於讀出的記錄,新增共享鎖直到transaction a結束。

其它transaction b對這個記錄的試圖修改會一直等待直到trasaction a結束。

可能發生的問題:當執行乙個範圍查詢時,可能會發生幻讀。

序列化讀:

新增範圍鎖(比如表鎖,頁鎖等,關於range lock,我也沒有很深入的研究),

直到transaction a結束。以此阻止其它trasaction b對此範圍內的insert,update等操作。

事務隔離級別

1 serializable 最嚴格的spring事務隔離級別,事務序列執行,資源消耗最大 3 read committed 大多數主流資料庫的預設spring事務隔離等級,保證了乙個事務不會讀到另乙個並行事務已修改但未提交的資料,避免了 髒讀取 該級別適用於大多數系統。4 read uncommi...

事務隔離級別

四種隔離級別 隔離級別 髒 讀不可重複讀取 幻 像讀操作未提交 read uncommitted 是是 是讀操作已提交 read committed 否是 是可重複讀 repeatable read 否否 是快照否否 否可序列讀 serializable 否否 否 sql server 還支援使用行...

事務隔離級別

需要防止的現象和事務隔離級別 ansi iso sql 標準 sql92 定義了四種事務隔離級別 transaction isolation level 這四種隔離級別所能提供的事務處理能力各不相同。這些事務隔離級別是針對三種現象定義的,在併發事務執行時,需要阻止這三種現象 中的一種或多種發生。三種...