事務的隔離級別,採用鎖的機制實現
髒讀 不 可重複讀 幻讀
未提交讀 :
不新增共享鎖。所以其它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 這四種隔離級別所能提供的事務處理能力各不相同。這些事務隔離級別是針對三種現象定義的,在併發事務執行時,需要阻止這三種現象 中的一種或多種發生。三種...