共計 1096 個字符,預計需要花費 3 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這篇文章給大家分享的是有關 Mysql 的四種隔離級別是什么的內容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考。一起跟隨丸趣 TV 小編過來看看吧。
mysql 有 4 種隔離級別,分別為:讀未提交內容、讀取提交內容、可重復讀、可串行化。
Mysql 的四種隔離級別
SQL 標準定義了 4 類隔離級別,包括了一些具體規則,用來限定事務內外的哪些改變是可見的,哪些是不可見的。低級別的隔離級一般支持更高的并發處理,并擁有更低的系統開銷。【視頻教程推薦:Mysql 教程】
讀未提交內容(read-uncommitted)
在該隔離級別中,所有事務都可以看到其他未提交事務的執行結果。本隔離級別很少用于實際應用,因為它的性能也不比其他級別好多少。
該隔離級別會出現的問題是:臟讀 (Dirty Read),即讀取到了未提交的數據。
讀取提交內容(read-committed)
這是大多數數據庫系統的默認隔離級別(但不是 MySQL 默認的)。它滿足了隔離的簡單定義:一個事務只能看見已經提交事務所做的改變。
該隔離級別會出現的問題是:不可重復讀 (Nonrepeatable Read),即不可重復讀意味著我們在同一個事務中執行完全相同的 select 語句時可能看到不一樣的結果。
導致這種情況的原因可能有:
1)、有一個交叉的事務有新的 commit,導致了數據的改變;
2)、一個數據庫被多個實例操作時, 同一事務的其他實例在該實例處理其間可能會有新的 commit
可重復讀(repeatable-read)
這是 MySQL 的默認事務隔離級別,它確保同一事務的多個實例在并發讀取數據時,會看到同樣的數據行。
不過理論上,這會導致另一個棘手的問題:幻讀(Phantom Read)。
簡單的說,幻讀指當用戶讀取某一范圍的數據行時,另一個事務又在該范圍內插入了新行,當用戶再讀取該范圍的數據行時,會發現有新的“幻影”行。
InnoDB 和 Falcon 存儲引擎通過多版本并發控制(MVCC,Multiversion Concurrency Control)機制解決了該問題。
可串行化(serializable)
這是最高的隔離級別,它通過強制事務排序,使之不可能相互沖突,從而解決幻讀問題。簡言之,它是在每個讀的數據行上加上共享鎖。在這個級別,可能導致大量的超時現象和鎖競爭。
在這個級別,可能導致大量的超時現象和鎖競爭。
感謝各位的閱讀!關于 Mysql 的四種隔離級別是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
向 AI 問一下細節
丸趣 TV 網 – 提供最優質的資源集合!