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