中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么理解MySQL的2PC和3PC

發布時間:2021-11-08 11:28:09 來源:億速云 閱讀:370 作者:iii 欄目:MySQL數據庫

這篇文章主要介紹“怎么理解MySQL的2PC和3PC”,在日常操作中,相信很多人在怎么理解MySQL的2PC和3PC問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么理解MySQL的2PC和3PC”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

分布式系統和分布式一致性問題

  分布式系統,即運行在多臺不同的網絡計算機上的軟硬件系統,并且僅通過消息傳遞來進行通信和協調。

  分布式一致性問題,即相互獨立的節點之間如何就一項決議達成一致的問題。

2PC(Two-Phase Commit 二階段提交)

二階段提交,是指將事務提交分成兩個部分:準備階段和提交階段。事務的發起者稱之為協調者,事務的執行者稱為參與者。

階段一:準備階段

             由協調者發起并傳遞帶有事務信息的請求給各個參與者,詢問是否可以提交事務,并等待返回結果。

             個 參與者執行事務操作,將Undo和Redo放入事務日志中(但是不提交)

              如果參與者執行成功就返回YES(可以提交事務),失敗NO(不能提交事務)

階段二:提交階段

              此階段分兩種情況:所有參與者均返回YES,有任何一個參與者返回NO

               所有參與者均反饋YES時,即提交事務。

               任何一個參與者反饋NO時,即中斷事務。

提交事務:(所有參與者均反饋YES)

  1、協調者向所有參與者發出正式提交事務的請求(即Commit請求)。

  2、參與者執行Commit請求,并釋放整個事務期間占用的資源。

  3、各參與者向協調者反饋Ack完成的消息。

  4、協調者收到所有參與者反饋的Ack消息后,即完成事務提交。

中斷事務:(任何一個參與者反饋NO)

  1、協調者向所有參與者發出回滾請求(即Rollback請求)。

  2、參與者使用階段1中的Undo信息執行回滾操作,并釋放整個事務期間占用的資源。

  3、各參與者向協調者反饋Ack完成的消息。

  4、協調者收到所有參與者反饋的Ack消息后,即完成事務中斷。

2PC的缺陷

  1、同步阻塞:最大的問題即同步阻塞,即:所有參與事務的邏輯均處于阻塞狀態。

  2、單點:協調者存在單點問題,如果協調者出現故障,參與者將一直處于鎖定狀態。

  3、腦裂:在階段2中,如果只有部分參與者接收并執行了Commit請求,會導致節點數據不一致。

  由于2PC存在如上同步阻塞、單點、腦裂問題,因此又出現了2PC的改進方案,即3PC。

3PC(Three-Phase Commit 三階段提交協議)

  3PC,三階段提交協議,是2PC的改進版本,即將事務的提交過程分為CanCommit、PreCommit、do Commit三個階段來進行處理。

階段一:CanCommit

             1、協調者向所有參與者發出包含事務內容的CanCommit請求,詢問是否可以提交事務,并等待所有參與者答復。

             2、參與者收到CanCommit請求后,如果認為可以執行事務操作,則反饋YES并進入預備狀態,否則反饋NO。

階段二:PreCommit

               此階段分為兩種情況:

                1.所有參與者均受到請求并返回YES。

                2.有任何一個參與者返回NO,或者有任何一個參與者超時,協調者無法收到反饋,則事務中斷

事務預提交:(所有參與者均反饋YES時)

  1、協調者向所有參與者發出PreCommit請求,進入準備階段。

  2、參與者收到PreCommit請求后,執行事務操作,將Undo和Redo信息記入事務日志中(但不提交事務)。

  3、各參與者向協調者反饋Ack響應或No響應,并等待最終指令。

中斷事務:(任何一個參與者反饋NO,或者等待超時后協調者尚無法收到所有參與者的反饋時)

  1、協調者向所有參與者發出abort請求。

  2、無論收到協調者發出的abort請求,或者在等待協調者請求過程中出現超時,參與者均會中斷事務。

階段3:do Commit

此階段也存在兩種情況:

  1、所有參與者均反饋Ack響應,即執行真正的事務提交。

  2、任何一個參與者反饋NO,或者等待超時后協調者尚無法收到所有參與者的反饋,即中斷事務。

  提交事務:(所有參與者均反饋Ack響應時)

  1、如果協調者處于工作狀態,則向所有參與者發出do Commit請求。

  2、參與者收到do Commit請求后,會正式執行事務提交,并釋放整個事務期間占用的資源。

  3、各參與者向協調者反饋Ack完成的消息。

  4、協調者收到所有參與者反饋的Ack消息后,即完成事務提交。

  中斷事務:(任何一個參與者反饋NO,或者等待超時后協調者尚無法收到所有參與者的反饋時)

  1、如果協調者處于工作狀態,向所有參與者發出abort請求。

  2、參與者使用階段1中的Undo信息執行回滾操作,并釋放整個事務期間占用的資源。

  3、各參與者向協調者反饋Ack完成的消息。

  4、協調者收到所有參與者反饋的Ack消息后,即完成事務中斷。

  注意:進入階段三后,無論協調者出現問題,或者協調者與參與者網絡出現問題,都會導致參與者無法接收到協調者發出的         do Commit請求或abort請求。此時,參與者都會在等待超時之后,繼續執行事務提交。

3PC的優點和缺陷

  優點:降低了阻塞范圍,在等待超時后協調者或參與者會中斷事務。避免了協調者單點問題,階段3中協調者出現問題時,參與者會繼續提交事務。

  缺陷:腦裂問題依然存在,即在參與者收到PreCommit請求后等待最終指令,如果此時協調者無法與參與者正常通信,會導致參與者繼續提交事務,造成數據不一致。

到此,關于“怎么理解MySQL的2PC和3PC”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

二连浩特市| 彰化市| 龙川县| 敦化市| 福泉市| 武穴市| 绵阳市| 泾阳县| 大兴区| 时尚| 临武县| 玛多县| 客服| 正宁县| 阿鲁科尔沁旗| 普定县| 柯坪县| 轮台县| 武穴市| 汾阳市| 镇远县| 开鲁县| 酒泉市| 周宁县| 茂名市| 尼玛县| 巴林左旗| 大英县| 攀枝花市| 浑源县| 建瓯市| 吴旗县| 台前县| 威远县| 清水河县| 津市市| 富蕴县| 玛多县| 五常市| 章丘市| 阿尔山市|