本文主要介紹理解mysql的四個隔離級別(mysql 四個隔離級別),下面一起看看理解mysql的四個隔離級別(mysql 四個隔離級別)相關資訊。
首先,第一件事是什么事務是一個應用中的一系列緊密操作,所有操作都必須成功完成,否則每個操作中的所有更改都將被撤銷,即事務是原子性的,事務中的一系列操作要么成功,要么不成功。一個交易有兩種結局。當所有步驟都成功執行時,事務被提交。如果其中一個步驟失敗,將發生回滾操作,從撤銷到事務開始的操作將被撤銷。兩個。交易的酸易有四個特征:原子性、一致性、隔離性和持久性。這四種特性稱為短酸特性。1。原子性,事務是數據庫的邏輯單元,包含在事務業務中。2。一致性,事務執行的結果必然是數據庫從一個一致性變成另一個一致性。所以當數據庫只包含事務提交成功的結果時,意味著數據庫處于一致狀態。如果數據庫系統的運行出現故障,對于這些未完成的事務中的一部分事務還沒有中斷,對數據庫的更改已經寫入物理數據庫,處于不良狀態或不一致狀態。3、隔離。一個事務的執行不受其他事務的干擾。也就是說,一個事務中使用的操作和數據是與其他并發事務隔離的,執行的各種事務不能互相干擾。4。堅持也叫永久。一旦事務被提交,它對數據庫中數據的更改應該是永久的。后續操作或失敗不應對執行結果產生任何影響。第三,mysql 的四種隔離級別sql標準定義了四種類型的隔離級別,包括一些特定的規則來限制事務內外可見和不可見的變化,而低級別的隔離級別通常支持更高的并發處理,系統開銷也更低。read uncommitted(讀取未提交的內容)在這個隔離級別,所有事務都可以看到其他未提交事務的執行結果。這種隔離級別在實際應用中很少使用,因為它的性能并不比其他級別好。read commit(讀提交)這是大多數數據庫系統的默認隔離級別(不是mysql的默認)。它滿足了隔離的簡單定義:事務只能看到提交給公司的變更。這個隔離級別還支持所謂的不可重復讀取。因為同一事務的其他實例在實例處理期間可能會有新的提交,所以同一選擇可能會返回不同的結果。可重復讀取(重讀)這是mysql默認的事務隔離級別,這樣同一個事務的多個實例在讀取數據的同時可以看到同一個數據行,但理論上這可能會導致另一個棘手的問題:幻影讀取。簡單來說,魔讀,當用戶讀取一系列數據行時,在另一個事務中插入一個新行range。當用戶讀取數據行時,將會出現一個新的幻像行。在…里nodb和falcon存儲引擎通過多版本并發控制(mvcc)機制解決了這個問題。序列化(serialization)這是最高級別的隔離,這使得不可能通過強制事務相互來解決幻影問題。簡而言之,它是每個讀取數據線上的共享鎖。在這個級別,可能會導致大量超時和鎖爭用。這四個隔離級別是用不同的鎖類型實現的。如果讀取相同的數據,很容易出現問題:臟讀(dirty reading):一個事務更新數據,另一個事務讀取相同的數據。由于某些原因,上一個回滾操作和下一個office讀取的數據會不正確。can 不重復閱讀,可以 不重復。在事務的兩次查詢中,數據不一致。這可能是兩個查詢過程,其中插入事務更新原始數據。(幽靈閱讀)幽靈閱讀:兩次查詢中,事務數據個數不一致,比如事務查詢系列(行)數據和另一個事務,但這時有新的數據進入列,前一個事務在下一個查詢中,你會發現前幾列數據都沒有。在mysql中,實現了這四個隔離級別,可能出現的問題如下:4。測試mysql隔離級別接下來,我們將使用mysql 的客戶端程序測試這些隔離級別。測試數據庫是演示,表是測試;表格結構是:兩個命令行客戶端是a和b;不斷改變a端的隔離等級,修改b端的數據。(1)設置未提交讀取(uncommitted reading)的隔離級別。答:啟動事務,當數據處于初始狀態時。b:啟動事務并更新數據,但是不要 不要犯錯誤。答:再看一遍數據,發現被修改了。這叫下流閱讀。b:回滾事務a:再次讀取數據,將數據恢復到初始狀態。從上面的實驗可以得出結論,事務b更新了一條記錄,但是沒有提交。此時,事務a可以查詢未提交的記錄,導致臟讀,未提交讀是最低級別的隔離。(2)客戶端a的事務隔離級別設置為讀提交(commit read)。答:開始交易,數據處于初始狀態。b:啟動事務并更新數據,但是不要 不要提交。答:再次讀取數據,發現數據沒有被修改。b:提交一個事務a:再次讀取數據,發現數據有變化,說明b在事務中是a提交的,這叫不重復。通過上面的實驗可以得出,讀隔離級別已經提交,解決了臟讀的問題,但是有一個問題不需要重復讀,就是事務的查詢數據不匹配,因為b更新了數據之間的查詢,只允許提交讀的記錄,但是不需要重復讀。(3)將a的隔離級別設置為可重復。取(可重復讀數)。答:啟動事務,當數據處于初始狀態時。b:啟動事務并更新數據,但是不要 不要提交。答:再次讀取數據,發現數據沒有被修改。b:提交一個事務a:再次讀取數據,發現數據沒有變化,說明這次又可以讀取了。b:插入一個新數據并提交。答:又看了一遍數據,發現數據沒有變化。雖然可以反復讀取,但是發現不是最新的數據。這就是所謂的魔法閱讀。回答:提交該事務,再次讀取數據,發現讀取正常。從上面的實驗結果可以得出,可重復讀取隔離級別只能讀取記錄,當一個事務讀取其他事務兩次時,更新另一個部門的記錄,但這個事務不需要與其他事務序列化。例如,當事務可以找到由提交的事務更新的記錄時,它可能會導致圖像讀取問題。和上面的實驗一樣,不存在數據讀取的問題。(4)設置隔離級別serializable a:啟動事務,此時數據處于初始狀態。b:我發現b這個時候在等,因為a s的事務還沒有提交,我只能等待(此時b可能在等待超時)。答案:提交事務b:找到成功插入的完全序列化的鎖域。如果一個事務查詢相同的數據,它必須等到前一個事務完成并且鎖被鎖定。這是一個完整的隔離級別,將鎖定相應的數據表,從而有一個有效的問題。綜上所述,這就是本文的全部內容。希望這篇文章的內容對大家有所幫助 的研究。有問題可以留言交流。
了解更多理解mysql的四個隔離級別(mysql 四個隔離級別)相關內容請關注本站點。
辦公電腦需要什么配置的電腦,辦公型電腦的配置
什么輕薄本性價比高(哪款輕薄本值得購買)
電腦開不開機了維修需要多少錢,電腦開不了機一般拿去修需要多少錢
我的世界hmcl啟動器啟動失敗怎么辦(我的世界hmcl啟動器下載鏈接)
2018年惠普筆記本型號,2018的新款筆記本包括什么牌子什么型號
深入理解mysql的四個隔離級別分別為(mysql的四種隔離級別)
自己組裝臺式電腦需要什么東西,組裝一臺臺式電腦需要哪些零件
魅藍手機配置怎么查,魅藍note6手機參數配置
蘋果手機怎么變成中文版本(蘋果手機如果怎么變中文)
蘋果電腦查看圖片軟件(用電腦查看蘋果手機圖片)
htc g10怎么截屏,HTC手機怎么截屏
釘釘的普通群和內部群有什么區別(釘釘群普通群和內部群)
美圖秀秀萌拍怎么添加照片(美圖秀秀萌拍素材在哪)
小米怎么關閉更新系統更新系統更新提醒嗎,如何取消小米手機系統更新提示
192.168.233.1惠普打印機設置網絡admin(1921682331惠普打印機設置網絡)
廣西最近幾年的地震(充電器線裂開了變綠色)_1
怎樣提取微信聊天記錄轉發(怎樣提取微信聊天記錄作為證據)
vivos6屏幕多大尺寸(vivos6的屏幕尺寸)
vivo手機連上wifi怎么上不了網,為什么VIVO手機連上WiFi后不能上網
美圖m6s配置怎么樣,美圖M8和M6s哪個好