您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關Mysql的四種隔離級別是什么的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
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的四種隔離級別是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。