1. 程式人生 > >自導自演的面試現場之--你竟然不瞭解MySQL的組提交?

自導自演的面試現場之--你竟然不瞭解MySQL的組提交?

Hi,大家好!我是白日夢!本文是MySQL專題的第 26 篇。 下文還是白日夢以自導自演的方式,圍繞“組提交”展開本話題。看看你能抗到第幾問吧

換一種寫作風格,自導自演面試現場!感覺這樣還是比較有趣的,歡迎大家訂閱我的MySQL專題,公眾號首發!持續更新中~
[點選閱讀原文,格式會好看一點哦~](https://mp.weixin.qq.com/s/IH9YxxsMPvFMyQCuF31jOg) [點選閱讀原文,格式會好看一點哦~](https://mp.weixin.qq.com/s/IH9YxxsMPvFMyQCuF31jOg) [點選閱讀原文,格式會好看一點哦~](https://mp.weixin.qq.com/s/IH9YxxsMPvFMyQCuF31jOg)

公眾號後臺回覆:資料庫 可以參與抽獎活動,3本《MySQL技術內幕-InnoDB儲存引擎》 歡迎關注白日夢,公眾號首發!持續連載中



庫尼奇瓦 ,同學,聽說你上一面表現的還可以,這一面要不咱繼續?


嗯,好啊!




好,你瞭解MySQL的兩階段提交不?說說看


嗯,瞭解。  簡單來說兩階段提交就是將事務提交分成兩部分,經過這兩步處理後,我們稱這個事務被提交了。




嗯,那兩個階段呢?你說說看!


可以看下面這張圖:我們當執行commit命令時,會按照如下進行。


第一階段:寫redo log,並標識上prepare。

-- 中間穿插寫binlog --

第二階段:寫redo log,完成事務的最終提交。




嗯,那你知不知道為什麼事務的提交要分成兩個階段?


嗯,你看上圖中的兩階段是redolog-prepare、redolog-commit這兩個階段,然後在這兩個階段中又寫了binlog。


這個redolog主要提供的能力是對事務進行rollback、並且redolog是儲存引擎層面記錄的日誌。


而binlog的作用是方面我們進行資料的備份以及MySQL叢集主從之間的資料同步使用,並且binlog是MySQL上層,也就是Server層面記錄的日誌。


綜上:MySQL的兩階段提交是為了保證redolog、binlog兩者在邏輯上的一致性。才能進一步保證。事務的回滾、資料備份、已經MySQL叢集之間的資料才是安全可靠的




嗯,那你能不能舉個例子,更直觀的告訴我,redolog、binlog兩者在邏輯一致的必要性以及用途?


嗯,好啊! ,比如這個例子:


在這個例子中,進行完第三步之後,沒來得及寫binlog,然後主庫就掛了,事務也沒來得及提交。


這時主庫從新啟動之後會選擇將這個事務丟棄,因為如果它將事務提交了,從庫們相對主庫來說就少了這條資料,造成了主從資料不一致問題




嗯,在看這個例子

在這個例子中主庫宕機前雖然也沒有完成對事務對提交,但是它已經寫了redolog-prepare、還寫了binlog,binlog寫完之後很可能從庫已經收到這個最新的binlog,並且將這個binlog中的資料回放到自己身上了。


所以主庫重新啟動之後呢,會選擇按照redolog將宕機前的事務狀態從記憶體中恢復出來,也就是說把記憶體中的快取頁改成髒資料頁,然後提交事務


這時主庫如果不提交事務,那主庫就比從庫少了一條資料,同時會造成主從不一致的情況出現。



白日夢補充:
本小節我們重點看MySQL的組提交,而不是兩階段提交,想更多的兩階段提交的故事,可以點選檢視白日夢寫的:全網最牛X的兩階段提交筆記


嗯,你說的沒錯 。我有個問題哈,你看你畫的這張圖,事務提交時寫了好幾次日誌。


而且一般我們線上的資料庫都有這兩個配置

            
           

相關推薦

面試現場--竟然瞭解MySQL提交

Hi,大家好!我是白日夢!本文是MySQL專題的第 26 篇。 下文還是白日夢以自導自演的方式,圍繞“組提交”展開本話題。看看你能抗到第幾問吧 換一種寫作風格,自導自演面試現場!感覺這樣還是比較有趣的,歡迎大家訂閱我的MySQL專題,公眾號首發!持續更新中~ [點選閱讀原文,格式會好看一點哦~](

面試現場,趣學MySQL的10種檔案

### 導讀 Hi,大家好!我是白日夢!本文是MySQL專題的第 24 篇。 今天我要跟你分享的MySQL話題是:“自導自演的資料庫面試現場--談談MySQL的10種檔案” 換一種寫作風格,自導自演面試現場!感覺這樣還是比較有趣的,歡迎大家訂閱我的MySQL專題,公眾號首發!持續更新中~ [點選閱

面試說我聽》:簡明的圖解Redis RDB持久化、AOF持久化

歡迎關注文章這一系列,一起學習 《提升能力,漲薪可待篇》 《面試知識,工作可待篇》 《實戰演練,拒絕996篇》 如果此文對你有幫助、喜歡的話,那就點個讚唄,點個關注唄! 1.持久化 1.1 持久化簡介 持久化(Persistence),持久化是將程式資料在持久狀態和瞬時狀態間轉換的機制,即把資料(如記憶

Javascript題還是懂js

ES6入門系列四(測試題分析) 0、導言 ES6中新增了不少的新特性,來點測試題熱熱身。具體題目來源請看:http://perfectionkills.com/javascript-quiz-es6/。 以下將一題一題來解析what和why。 1、題目一

vue技術分享可能知道的7個祕密

本文是vue原始碼貢獻值Chris Fritz在公共場合的一場分享,覺得分享裡面有不少東西值得借鑑,雖然有些內容我在工作中也是這麼做的,還是把大神的ppt在這裡翻譯一下,希望給朋友帶來一些幫助。 一、善用watch的immediate屬性 這一點我在專案中也是這麼寫的。例如有請求需要再也沒初

微信小程式可能知道的特殊效果

一.下拉重新整理效果 假設頁面為index檔案,那麼程式碼如下: index.json: { "enablePullDownRefresh": true } index.js: //下拉重新整理 onPullDownRefresh: function () { wx.

python可能知道的常用小點滴 -_-

一感二愛三井四錢五百分    六尖七和八星九靈狐撿燈 ! @ # $ %     ^ & * ( ) - = , . / ? ' \ | ~ ` 反斜槓可以用來轉義,使用r可以讓反斜

vue技術分享可能知道的7個秘密

med 動態 targe lod immediate 前端開發 class elements 傳遞 本文是vue源碼貢獻值Chris Fritz在公共場合的一場分享,覺得分享裏面有不少東西值得借鑒,雖然有些內容我在工作中也是這麽做的,還是把大神的ppt在這裏翻譯一下,希望給

[轉載]瞭解的DevOps

DevOps開發運維訓練營 一旦建立了創新的文化,即使那些並非科學家或者工程師的人——詩人、演員、記者——也能以團體的形式,接受科學文化的意義。他們信奉創新文化的概念。他們以促進這種文化的方式投票。他們不會反對科學,也不會反對技術。 ——Neil deGrasse Tyson

IG奪冠!王思聰都這麼努力,瞭解下QbaoNetwork嗎?

前幾天,小Q 的朋友圈充斥著狂歡節一般的氣氛,被IG 刷屏了。 一半的人在為IG 加油、歡呼,“IG 衝鴨”、“IG 冠軍”、“IG 牛批”…… 另一半人在問IG 是誰~ 據小Q 瞭解,IG 是由“國民老公王思聰”一手打造的電競戰隊,成立於2011年。在2018

MyBatis-瞭解的sql和include

今天在大致講解一下 <sql> 和 <include> 節點的使用。 <sql> 節點的基礎 對於 <sql> 節點, 很多人的理解估計就是用來包含資料庫的欄位的, 以便用來替換所有欄位 「*」 符號, 以此來提高 SQL 的執行速度。 類似這樣 <

震驚:這樣投簡歷才有效,竟然知道?

 簡歷是敲門磚,而投簡歷這項敲門技術好不好,直接決定了你有沒有面試機會。所以今天我們來討論一下關於如何投好簡歷這個問題。前程無憂在近期釋出了《簡歷投遞習慣行為調查報告》(下稱《簡投調查報告》),從大資料上反映了個人對於投簡歷有著怎樣的喜好和習慣。      大家都是這

瞭解的Linux二進位制

點選標題下「非同步圖書」可快速關注 二進位制分析屬於資訊保安業界逆向工程中的一種技術,通過利用可執行的機器程式碼(二進位制)來分析應用程式的控制結構和執行方式,它有助於資訊保安從業人員更好

瞭解的Linux(文末有福利)

稻盛和夫先生在《活法》中有段一直激勵著我的話,現在轉送給正在閱讀本文的你: “工作馬馬虎虎,只想在興趣和遊戲中尋覓快活,充其量只能獲得一時的快感,絕不能嚐到從心底湧出的驚喜和快樂,但來自工作的

Git修改檔案能直接成功提交

在工作區修改檔案後,能直接提交成功嗎?答案不能,如何驗證呢? 1. 未修改檔案內容前檢視提交日誌 $ git log$ git log --stat 2.檔案修改,並進行差異比對 1)新增內容到

NODE.JS 連線 MySql 問題 顯示找mysql

這個問題的原因是node.js外部引入包會在 node_module裡面進行查詢,如果你安裝node.js的目錄和專案檔案的目錄不一致,那麼就無法引入外部包。因此,只需要在命令列中進入你的專案檔案根目錄,然後 npm install mysql 即可解決。

可能瞭解的效能測試

背景介紹 專案越做越大,使用者量和請數量可能隨時發生井噴,如果等到系統崩潰時再補救,損失可就大了,所以得想個辦法提前預防。 想要預防,就得知道系統的哪個環比較節薄弱,頂不住壓力,還要對系統的承受能力有個全面的評估,心裡有底,好提前預防,這種評估分析預防優化等一系列手段全被效能測試涵蓋在內。 效能的指標 不

瞭解基於session的授權認證嗎?

### 前言 在漫長的開發過程中,許可權認證是一個永恆不變的話題,隨著技術的發展,從以前的基於sessionId的方式,變為如今的token方式。session常用於單體應用,後來由於微服務的興起,分散式應用佔了很大的一部分。本文將為大家介紹基於session的單體應用授權認證方式。後續會介紹基於token的

分散式一致性演算法,確定瞭解一下?

  集中式與分散式 集中式 分散式 分散式事務 一致性協議 2PC:Two-Phase Commit二階段提交協議 3PC:Three-phase Commit 三階段提交協議 Paxos演算法 RAFT演算法 總結   集中式與分散式 集中式 就是將所有的業務都部署在