首頁 >資料庫 >mysql教程 >事務的四個隔離等級分別是什麼

事務的四個隔離等級分別是什麼

王林
王林原創
2020-07-01 14:52:3715021瀏覽

交易的四個隔離等級分別是: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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn