交易的四個隔離等級分別是:1、讀取未提交內容(Read Uncommitted);2、讀取提交內容(Read Committed);3、可重讀(Repeatable Read);4、可串行化(Serializable)。
交易的四個隔離等級:
(推薦學習:mysql教學)
一、Read Uncommitted -- 讀取未提交內容
#一個交易可以查看到未提交的內容
常產生髒讀問題(髒讀:讀取到其他交易未提交(執行)的內容)
#對相同資料表開啟A、B兩個交易(A 、B事務交叉) start transaction
A事務只查詢資料表中內容,B事務做增刪改操作但不commit(提交)
A事務依舊可以查詢到表中的數據改變(查詢到未提交的內容--髒讀)
二、Read Committed -- 讀取提交內容
一個交易只能查看已提交的內容
常產生不可重複讀取的問題(不可重複讀取:在同一交易中執行相同的select語句得到不同的結果)
對同一資料表開啟A、B兩個交易(A、B交易交叉) start transaction
A交易只查詢資料表中內容,B交易做增刪改操作但不commit(提交)
A交易查詢不到表中的資料改變的內容
B交易提交
A查到的資料改變(A兩次查詢,產生不同的結果--不可重複讀取)
三、Repeatable Read -- 可重讀
同一交易的多個實例並發讀取資料時得到相同結果
MySQL的預設交易隔離等級
#常產生幻讀問題(幻讀:多次讀取時產生不同結果(幻影行))
對相同資料表開啟A、B兩個交易(A、B交易交叉) start transaction
A交易只查詢資料表中內容,B交易做增刪改操作但不commit(提交)
A交易查詢不到表中的資料改變的內容
B交易提交
#A交易查詢不到表中的資料改變的內容
A提交
A可查詢到表中資料的改變
四、Serializable -- 可串列化
最高隔離等級
給交易加上共用鎖定,同時只能有一個交易操作,解決幻讀問題
會導致大量逾時與鎖定競爭問題
#開啟A交易
開啟B交易時無法增刪該動作
以上是事務的四個隔離等級分別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!