資料庫隔離級別與常見問題

2022-10-05 06:09:08 字數 929 閱讀 6730

乙個事務讀取了另乙個事務修改但未提交的資料,。

同一事務中,同乙個查詢讀取某行,在time1獲取到某行,在time2重新讀取時發現該資料發生修改,可能被更新或刪除

同一事務中,同乙個查詢多次執行,由於其他插入操作的事務提交,導致返回不同結果集。

髒讀:某事務讀取另一事務未提交的髒資料。

不可重複讀:同一事務內查詢返回不同結果。

幻讀:主要針對資料整體,insert操作。

不可重複讀:主要針對同一資料項,delete或update操作。

事務中的操作不可再分割,這些操作要麼全部成功,要麼全部失敗。

事務的執行不能破壞資料庫的完整性和一致性,乙個事務在執行前和執行後,資料庫都必須處於一致性狀態。

併發操作時,不同事務之間互相隔離、互不干擾。

一旦事務提交,則事務中的資料操作需要被持久化到資料庫中。

最高的隔離級別,強制事務排序,強制事務序列執行,使其不可能發生衝突。即在每個讀的資料行加上共享鎖。

可能導致大量的超時現象和鎖競爭。

可防止髒讀、不可重複讀、幻讀。

確保同乙個事務,在多次讀取同樣資料時,得到同樣結果。

可防止髒讀、不可重複讀。

mysql預設隔離級別為可重複讀。

乙個事務只能看見已提交事務所作的改變。

可防止髒讀。

絕大多數資料庫的預設隔離級別均為讀已提交,例如oracle、sql server、postgre。

所有事務都可以看到其他未提交事務的執行結果。

併發效能最高,但會產生髒讀、不可重複讀、幻讀。

spring隔離級別就是資料庫的四大隔離級別。spring預設隔離級別與資料庫隔離級別一致。

資料庫併發問題與隔離級別

資料庫的事務在併發執行的時候,如果不考慮隔離性,就會產生以下幾種問題 髒讀是指在乙個事務處理過程裡讀取了另乙個未提交的事務中的資料。假設事務1正在訪問資料並且對資料進行了修改,而這種修改還沒有提交到資料庫中,這時,事務2也訪問這個資料,然後使用了這個資料。因為這個資料是還沒有提交的資料,那麼事務2讀...

資料庫常見問題

髒讀 事務b讀取事務a還沒有提交的資料 不可重複讀 兩次事務讀的資料不一致 幻讀 事務a修改了資料,事務b也修改了資料,這時在事務a看來,明明修改了資料,咋不一樣 會出現 不會出現 資料庫 聯機事務處理oltp on line transaction processing 儲存的資料量小,方便操作,...

資料庫 事務與隔離級別

事務概述 redo log概述 undo log概述 事務控制語句 配置引數 控制語句 事務隔離級別 隔離級別簡介 mvcc併發控制 鎖型別簡介 事務是作為單個邏輯操作單元的一系列操作。事務可以包含一條或多條sql語句,所有的語句被當做乙個操作單元,要麼全部成功 要麼全部失敗 即作為乙個原子操作 資...