redo log、bindo log和兩階段提交

一:redo log(重做日志 是物理日志 InnoDB特有的日志)

數(shù)據(jù)庫中很多表其實(shí)是放在磁盤的,只有一少部分使用的時候才調(diào)入內(nèi)存辜羊。如果我們需要修改表的信息要怎樣做呢?首先是在內(nèi)存中修改表的信息吧词顾,其次找到磁盤表對應(yīng)的位置八秃,在上面update表的信息吧。對磁盤操作時很慢的啊计技,那有啥辦法可以解決這個問題呢喜德?redo log出現(xiàn)了。

1.redo log是用來干啥的

redo log可以保存數(shù)據(jù)庫執(zhí)行的指令,并把在內(nèi)存中的表的信息更新了吮成,但是不去更新磁盤上表的信息分井。那啥時候去更新呢?等系統(tǒng)自己空閑的時候再自動進(jìn)行磁盤讀寫速种。InnoDB的redo log是固定大小的,比如可以配置為一組4個文件,每個文件的大小是1GB它抱,那么總共就可以記錄4GB的操作。

2.redo log滿了咋處理

redo log寫滿了朴艰,系統(tǒng)沒法辦法只能停下來去把信息更新到磁盤上观蓄。留出一些空間留繼續(xù)保存新的命令。

3.Crash-safe

有了redo log祠墅,InnoDB就可以保證即使數(shù)據(jù)庫發(fā)生異常重啟侮穿,之前提交的記錄都不會丟失,這個能力稱為crash-safe毁嗦。

二:bindo log(歸檔日志 是邏輯日志)

MySQL自帶的引擎是MyISAM亲茅,但是MyISAM沒有crash-safe的能力,binlog日志只能用于歸檔。而InnoDB是另一個公司以插件形式引入MySQL的克锣,既然只依靠binlog是沒有crash-safe能力的茵肃,所以InnoDB使用另外一套日志系統(tǒng)——也就是redo log來實(shí)現(xiàn)crash-safe能力。binlog會記錄所有的邏輯操作袭祟,并且是采用追加寫的形式验残。主要用于數(shù)據(jù)庫恢復(fù)到某一個時刻,當(dāng)然這樣的前提是有這段時間的binlog巾乳。

三:redo log和bindo log的對比

  1. redo log是InnoDB引擎特有的您没;binlog是MySQL的Server層實(shí)現(xiàn)的,所有引擎都可以使用想鹰。
  2. redo log是物理日志紊婉,記錄的是“在某個數(shù)據(jù)頁上做了什么修改”;binlog是邏輯日志辑舷,記錄的是這個語句的原始邏輯喻犁,比如“給ID=2這一行的c字段加1 ”。
  3. redo log是循環(huán)寫的何缓,空間固定會用完肢础;binlog是可以追加寫入的÷道“追加寫”是指binlog文件寫到一定大小后會切換到下一個传轰,并不會覆蓋以前的日志。

四:兩階段提交

1.定義

redo log的寫入拆成了兩個步驟:prepare和commit谷婆。對于要寫入redolog的新行:


2.詳述

先來回顧下經(jīng)典的2PC協(xié)議慨蛙,有兩個角色:一個協(xié)調(diào)者(coordinator)和若干參與者(participant),協(xié)議執(zhí)行可以分為如下幾個階段:

預(yù)處理階段:嚴(yán)格來說纪挎,預(yù)處理階段并不是2PC的一部分期贫,在實(shí)際的分布式數(shù)據(jù)庫中,這個階段由協(xié)調(diào)者向若干參與者發(fā)送SQL請求或執(zhí)行計(jì)劃异袄,包括獲取行鎖通砍,生成redo數(shù)據(jù)等操作。

Prepare階段:客戶端向協(xié)調(diào)者發(fā)送事務(wù)提交請求烤蜕,協(xié)調(diào)者開始執(zhí)行兩階段提交封孙,向所有的事務(wù)參與者發(fā)送prepare命令,參與者將redo數(shù)據(jù)持久化成功后讽营,向協(xié)調(diào)者應(yīng)帶prepare成功虎忌。這里隱含的意思是,參與者一旦應(yīng)答prepare成功斑匪,就保證后續(xù)一定能夠成功執(zhí)行commit命令(redolog持久化成功自然保證了后續(xù)能夠成功commit)呐籽。
Commit階段
執(zhí)行Commit:協(xié)調(diào)者收到所有參與者應(yīng)答prepare成功的消息后锋勺,執(zhí)行commit,先在本地持久化事務(wù)狀態(tài)狡蝶,然后給所有的事務(wù)參與者發(fā)送commit命令庶橱。參與者收到commit命令后,釋放事務(wù)過程中持有的鎖和其他資源贪惹,將事務(wù)在本地提交(持久化一條commit日志)苏章,然后向協(xié)調(diào)者應(yīng)答commit成功。協(xié)調(diào)者收到所有參與者應(yīng)答commit成功的消息后奏瞬,向客戶端返回成功枫绅。
執(zhí)行Abort:prepare階段中如果有參與者返回prepare失敗或者超時未應(yīng)答,那么協(xié)調(diào)者將執(zhí)行abort硼端,同樣先在本地持久化事務(wù)狀態(tài)并淋,然后給所有參與者發(fā)送abort命令。參與者收到abort命令后珍昨,釋放鎖和其他資源县耽,將事務(wù)回滾(有必要的情況下還要持久化一條abort日志)。

3.為啥需要兩階段提交镣典?

這是為了讓兩份日志之間的邏輯一致兔毙。

你是不是會感覺bindolog多余?
但是binlog還不能去掉兄春。
一個原因是澎剥,redolog只有InnoDB有,別的引擎沒有赶舆。
另一個原因是哑姚,redolog是循環(huán)寫的,不持久保存芜茵,binlog的“歸檔”這個功能蜻懦,redolog是不具備的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末夕晓,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子悠咱,更是在濱河造成了極大的恐慌蒸辆,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件析既,死亡現(xiàn)場離奇詭異躬贡,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)眼坏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門拂玻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事檐蚜∑嵌” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵闯第,是天一觀的道長市栗。 經(jīng)常有香客問我,道長咳短,這世上最難降的妖魔是什么填帽? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮咙好,結(jié)果婚禮上篡腌,老公的妹妹穿的比我還像新娘。我一直安慰自己勾效,他們只是感情好嘹悼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著葵第,像睡著了一般绘迁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上卒密,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天缀台,我揣著相機(jī)與錄音,去河邊找鬼哮奇。 笑死膛腐,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鼎俘。 我是一名探鬼主播哲身,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼贸伐!你這毒婦竟也來了勘天?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤捉邢,失蹤者是張志新(化名)和其女友劉穎脯丝,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伏伐,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宠进,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了藐翎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片材蹬。...
    茶點(diǎn)故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡实幕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出堤器,到底是詐尸還是另有隱情昆庇,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布吼旧,位于F島的核電站凰锡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏圈暗。R本人自食惡果不足惜掂为,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望员串。 院中可真熱鬧勇哗,春花似錦、人聲如沸寸齐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽渺鹦。三九已至扰法,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間毅厚,已是汗流浹背塞颁。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吸耿,地道東北人祠锣。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像咽安,于是被迫代替她去往敵國和親伴网。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 之前我們了解了一條查詢語句的執(zhí)行流程妆棒,并介紹了執(zhí)行過程中涉及的處理模塊澡腾。一條查詢語句的執(zhí)行過程一般是經(jīng)過連接器、分...
    武培軒閱讀 660評論 1 7
  • redo log(重做日志): https://www.cnblogs.com/hapjin/archive/20...
    xuxw閱讀 482評論 0 0
  • 1.MYSQL(一)---基礎(chǔ)架構(gòu)(查詢)2.MYSQL(二)---日志系統(tǒng)(更新)3.MYSQL(三)---事務(wù)...
    周周周__閱讀 469評論 0 2
  • 純屬個人淺見糕珊,無任何調(diào)查數(shù)據(jù)蛋铆。 本來我對益達(dá)的廣告很反感的,特別是挑舌頭的那段放接,簡直惡心死了,但是綠箭一出留特,益達(dá)退...
    問書閱讀 876評論 0 1
  • ? Typora是一款輕便簡潔的Markdown編輯器纠脾,支持即時渲染技術(shù)玛瘸,這也是與其他Markdown編輯器最顯著...
    zzzsssr閱讀 103,857評論 1 81