国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Mysql日志redo log、bin log、undo log 區(qū)別與作用及二階段提交

這篇具有很好參考價(jià)值的文章主要介紹了Mysql日志redo log、bin log、undo log 區(qū)別與作用及二階段提交。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、redo log

重做日志

作用:確保事務(wù)的持久性。防止在發(fā)生故障的時(shí)間點(diǎn),尚有臟頁(yè)未寫(xiě)入磁盤,在重啟mysql服務(wù)的時(shí)候,根據(jù)redo log進(jìn)行重做,從而達(dá)到事務(wù)的持久性這一特性。

內(nèi)容:物理格式的日志,記錄的是物理數(shù)據(jù)頁(yè)面的修改的信息,其redo log是順序?qū)懭雛edo log file的物理文件中去的。

二、bin log

歸檔日志(二進(jìn)制日志)

作用:用于復(fù)制,在主從復(fù)制中,從庫(kù)利用主庫(kù)上的binlog進(jìn)行重播,實(shí)現(xiàn)主從同步。
用于數(shù)據(jù)庫(kù)的基于時(shí)間點(diǎn)的還原。

內(nèi)容:邏輯格式的日志,可以簡(jiǎn)單認(rèn)為就是執(zhí)行過(guò)的事務(wù)中的sql語(yǔ)句。

但又不完全是sql語(yǔ)句這么簡(jiǎn)單,而是包括了執(zhí)行的sql語(yǔ)句(增刪改)反向的信息,也就意味著delete對(duì)應(yīng)著delete本身和其反向的insert;update對(duì)應(yīng)著update執(zhí)行前后的版本的信息;insert對(duì)應(yīng)著delete和insert本身的信息。

binlog 有三種模式:Statement(基于 SQL 語(yǔ)句的復(fù)制)、Row(基于行的復(fù)制) 以及 Mixed(混合模式)

三、undo log

回滾日志

作用:保存了事務(wù)發(fā)生之前的數(shù)據(jù)的一個(gè)版本,可以用于回滾,同時(shí)可以提供多版本并發(fā)控制下的讀(MVCC),也即非鎖定讀

內(nèi)容:邏輯格式的日志,在執(zhí)行undo的時(shí)候,僅僅是將數(shù)據(jù)從邏輯上恢復(fù)至事務(wù)之前的狀態(tài),而不是從物理頁(yè)面上操作實(shí)現(xiàn)的,這一點(diǎn)是不同于redo log的。

四、二階段提交問(wèn)題

兩階段提交,是為了binlog和redolog兩分日志之間的邏輯一致。redo log 和 binlog 都可以用于表示事務(wù)的提交狀態(tài),而兩階段提交就是讓這兩個(gè)狀態(tài)保持邏輯上的一致。

由于 redo log 和 binlog 是兩個(gè)獨(dú)立的邏輯,如果不用兩階段提交,要么就是先寫(xiě)完 redo log 再寫(xiě) binlog,或者采用反過(guò)來(lái)的順序??赡茉斐傻膯?wèn)題:

update 語(yǔ)句來(lái)做例子。假設(shè)當(dāng)前 ID=2 的行,字段 c 的值是 0,再假設(shè)執(zhí)行 update 語(yǔ)句過(guò)程中在寫(xiě)完第一個(gè)日志后,第二個(gè)日志還沒(méi)有寫(xiě)完期間發(fā)生了 crash,會(huì)出現(xiàn)什么情況呢?

1. 先寫(xiě) redo log 后寫(xiě) binlog。

假設(shè)在 redo log 寫(xiě)完,binlog 還沒(méi)有寫(xiě)完的時(shí)候,MySQL 進(jìn)程異常重啟。由于,redo log 寫(xiě)完之后,系統(tǒng)即使崩潰,仍然能夠把數(shù)據(jù)恢復(fù)回來(lái),所以恢復(fù)后這一行 c 的值是 1。但是由于 binlog 沒(méi)寫(xiě)完就 crash 了,這時(shí)候 binlog 里面就沒(méi)有記錄這個(gè)語(yǔ)句。因此,之后備份日志的時(shí)候,存起來(lái)的 binlog 里面就沒(méi)有這條語(yǔ)句。然后你會(huì)發(fā)現(xiàn),如果需要用這個(gè) binlog 來(lái)恢復(fù)臨時(shí)庫(kù)的話,由于這個(gè)語(yǔ)句的 binlog 丟失,這個(gè)臨時(shí)庫(kù)就會(huì)少了這一次更新,恢復(fù)出來(lái)的這一行 c 的值就是 0,與原庫(kù)的值不同。

2. 先寫(xiě) binlog 后寫(xiě) redo log。

如果在 binlog 寫(xiě)完之后 crash,由于 redo log 還沒(méi)寫(xiě),崩潰恢復(fù)以后這個(gè)事務(wù)無(wú)效,所以這一行 c 的值是 0。但是 binlog 里面已經(jīng)記錄了“把 c 從 0 改成 1”這個(gè)日志。所以,在之后用 binlog 來(lái)恢復(fù)的時(shí)候就多了一個(gè)事務(wù)出來(lái),恢復(fù)出來(lái)的這一行 c 的值就是 1,與原庫(kù)的值不同。

如果不使用“兩階段提交”,那么數(shù)據(jù)庫(kù)的狀態(tài)就有可能和用它的日志恢復(fù)出來(lái)的庫(kù)的狀態(tài)不一致。

redo log 的寫(xiě)入拆成了兩個(gè)步驟:prepare 和 commit,這就是"兩階段提交"。
Mysql日志redo log、bin log、undo log 區(qū)別與作用及二階段提交文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-437744.html

到了這里,關(guān)于Mysql日志redo log、bin log、undo log 區(qū)別與作用及二階段提交的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 一文讀懂MySQL7大日志(slow、redo、undo、bin、relay、general、error)

    一文讀懂MySQL7大日志(slow、redo、undo、bin、relay、general、error)

    用于記錄執(zhí)行時(shí)間超過(guò)指定值的 SQL 語(yǔ)句的詳細(xì)信息,多用于調(diào)試和監(jiān)控。 因?yàn)殚_(kāi)啟會(huì)略微影響性能,所以默認(rèn)沒(méi)有開(kāi)啟,所以需要配置。 重做日志,記錄了數(shù)據(jù)庫(kù)中發(fā)生的每次修改,如增、刪、改、對(duì)數(shù)據(jù)頁(yè)的更改。這些修改被記錄在 redo 日志中,以便在數(shù)據(jù)庫(kù)崩潰或意外

    2024年03月09日
    瀏覽(31)
  • [MySQL]事務(wù)原理之redo log,undo log

    [MySQL]事務(wù)原理之redo log,undo log

    ??鍵盤敲爛,年薪30萬(wàn)?? 目錄 一、log日志文件 ?? 事務(wù)執(zhí)行流程 ?? redo log ?? undo log 二、總結(jié) ??再來(lái)一遍ACID 1. 原子性: 原子性確保事務(wù)作為一個(gè)整體執(zhí)行,要么全部執(zhí)行成功,要么全部不執(zhí)行。 2. 一致性: 一致性確保事務(wù)將數(shù)據(jù)庫(kù)從一個(gè)狀態(tài)轉(zhuǎn)換為另一個(gè)狀態(tài)。 3.

    2024年02月04日
    瀏覽(23)
  • mysql undo log、redo log、binlog、mvcc、Buffer Pool的關(guān)系

    ????????MySQL中的undo log、redo log、binlog和MVCC(多版本并發(fā)控制)是數(shù)據(jù)庫(kù)管理系統(tǒng)中的 重要概念,它們各自有不同的作用和關(guān)系。 Buffer Pool(緩沖池): 作為InnoDB存儲(chǔ)引擎的核心組件,Buffer Pool用于緩存從磁盤讀取的數(shù)據(jù)頁(yè)。所有的數(shù)據(jù)修改首先發(fā)生在內(nèi)存中的緩沖池里

    2024年02月02日
    瀏覽(25)
  • MySQL日志之binlog,redo log

    目錄 1.binlog 概念: 作用: 格式: 寫(xiě)入操作: 2.redo log 概念: 作用: redo log在MySQL操作數(shù)據(jù)時(shí)的實(shí)現(xiàn): 查詢時(shí): 更新時(shí): 寫(xiě)入操作: 概念: 刷盤策略: 自動(dòng)刷盤操作: binlog,記錄所有語(yǔ)句的更新操作(即只要增刪改,不包含查) 同步數(shù)據(jù),保證 數(shù)據(jù)的一致性 statement:

    2024年02月16日
    瀏覽(90)
  • mysql開(kāi)啟bin log 并查看bin log日志(linux)

    mysql開(kāi)啟bin log 并查看bin log日志(linux)

    參數(shù)說(shuō)明: ? ? ?

    2024年02月13日
    瀏覽(98)
  • Mysql開(kāi)啟bin-log日志

    Mysql開(kāi)啟bin-log日志

    目錄 一、安裝配置 二、mysqlbinlog命令? ?

    2024年02月20日
    瀏覽(232)
  • 【MySQL 數(shù)據(jù)寶典】【磁盤結(jié)構(gòu)】- 006 bin log 二進(jìn)制日志的基本模式和參數(shù)設(shè)置

    【MySQL 數(shù)據(jù)寶典】【磁盤結(jié)構(gòu)】- 006 bin log 二進(jìn)制日志的基本模式和參數(shù)設(shè)置

    binlog是一個(gè)二進(jìn)制格式的文件,用于記錄 用戶對(duì)數(shù)據(jù)庫(kù)更新的SQL 語(yǔ)句信息,例如更改數(shù)據(jù)庫(kù)表和更改內(nèi)容的SQL語(yǔ)句都會(huì)記錄到binlog里,但是不會(huì)記錄SELECT和SHOW這類操作。 binlog在MySQL的Server層實(shí)現(xiàn)(引擎共用) binlog為邏輯日志,記錄的是一條SQL語(yǔ)句的原始邏輯 binlog不限制大小,追

    2024年04月24日
    瀏覽(102)
  • mysql-bin日志清理,并設(shè)置expire_logs_days時(shí)間,mysql占用空間過(guò)大問(wèn)題

    mysql-bin日志清理,并設(shè)置expire_logs_days時(shí)間,mysql占用空間過(guò)大問(wèn)題 最近發(fā)現(xiàn)生產(chǎn)環(huán)境的服務(wù)器磁盤空間吃緊,查下到底是哪里占用的空間比較大,最后發(fā)現(xiàn),mysql占用空間蠻大的。 發(fā)現(xiàn)mysql占用的空間很大,具體看看哪些數(shù)據(jù)占用了空間 發(fā)現(xiàn)mysql-bin占用了很大的空間 mysql-b

    2024年02月01日
    瀏覽(20)
  • 【數(shù)據(jù)庫(kù)管理】④重做日志Redo Log

    重做日志(Redo log)是數(shù)據(jù)庫(kù)管理系統(tǒng)中的一種機(jī)制,主要作用包括: 提供事務(wù)的持久性支持:重做日志記錄了每個(gè)事務(wù)對(duì)數(shù)據(jù)庫(kù)所做的修改操作,以便在系統(tǒng)故障或崩潰時(shí),通過(guò)重新執(zhí)行重做日志中未提交的事務(wù)來(lái)恢復(fù)數(shù)據(jù)。 支持?jǐn)?shù)據(jù)庫(kù)備份和恢復(fù):重做日志可以用于還原

    2023年04月08日
    瀏覽(86)
  • 02_重要的兩個(gè)日志 redo log 和 binlog

    02_重要的兩個(gè)日志 redo log 和 binlog

    MySQL 45 講Note: 課程專欄名稱:《MySQL實(shí)戰(zhàn)45講》課程 筆記參考:MYSQL45 講 想要理解這兩個(gè)日志 redo log 和 binlog ;我們需要對(duì)MySQL 的備份恢復(fù)機(jī)制有一個(gè)基本的了解。 之前你可能經(jīng)常聽(tīng) DBA 同事說(shuō),MySQL 可以恢復(fù)到半個(gè)月內(nèi)任意一秒的狀態(tài),帶著好奇的態(tài)度,這是怎樣做到的呢

    2024年02月07日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包