事務隔離級別:乙個事務對資料庫的修改與並行的另乙個事務的隔離程度。
兩個併發事務同時訪問資料庫表相同的行時,可能存在以下三個問題:
1、幻想讀:事務t1讀取一條指定where條件的語句,返回結果集。此時事務t2插入一行新記錄,恰好滿足t1的where條件。然後t1使用相同的條件再次查詢,結果集中可以看到t2插入的記錄,這條新紀錄就是幻想。
2、不可重複讀取:事務t1讀取一行記錄,緊接著事務t2修改了t1剛剛讀取的記錄,然後t1再次查詢,發現與第一次讀取的記錄不同,這稱為不可重複讀。
3、髒讀:事務t1更新了一行記錄,還未提交所做的修改,這個t2讀取了更新後的資料,然後t1執行回滾操作,取消剛才的修改,所以t2所讀取的行就無效,也就是髒資料。
為了處理這些問題,sql標準定義了以下幾種事務隔離級別
read uncommitted 幻想讀、不可重複讀和髒讀都允許。
read committed 允許幻想讀、不可重複讀,不允許髒讀
repeatable read 允許幻想讀,不允許不可重複讀和髒讀
serializable 幻想讀、不可重複讀和髒讀都不允許
oracle資料庫支援read committed 和 serializable這兩種事務隔離級別。所以oracle不支援髒讀
sql標準所定義的預設事務隔離級別是serializable,但是oracle 預設使用的是read committed
設定隔離級別使用 set transaction isolation level [read uncommitted|read committed|repeatable read|serializable]
事務隔離級別
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 這四種隔離級別所能提供的事務處理能力各不相同。這些事務隔離級別是針對三種現象定義的,在併發事務執行時,需要阻止這三種現象 中的一種或多種發生。三種...