国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

MySQL三大日志(binlog、redo log和undo log)圖文詳解

瀏覽:171日期:2023-02-18 16:43:24
目錄
  • 1.redo log
    • redo log概述
    • 刷盤時(shí)機(jī)
      • innodb_flush_log_at_trx_commit=0
      • innodb_flush_log_at_trx_commit=1
      • innodb_flush_log_at_trx_commit=2
    • 日志文件組
    • 2.binlog binlog
      • 概述
        • 記錄格式
          • 寫入機(jī)制
            • 刷盤時(shí)機(jī)
            • 3.兩階段提交
              • 4.undo log
                • 5.總結(jié)
                  • 總結(jié)

                    1.redo log

                    redo log概述

                    redo log(重做日志)是InnoDB存儲(chǔ)引擎獨(dú)有的,它讓MySQL擁有了崩潰恢復(fù)能力。

                    比如 MySQL 實(shí)例掛了或宕機(jī)了,重啟時(shí),InnoDB存儲(chǔ)引擎會(huì)使用redo log恢復(fù)數(shù)據(jù),保證數(shù)據(jù)的持久性與完整性。

                    MySQL 中數(shù)據(jù)是以頁為單位,你查詢一條記錄,會(huì)從硬盤把一頁的數(shù)據(jù)加載出來,加載出來的數(shù)據(jù)叫數(shù)據(jù)頁,會(huì)放入到 Buffer Pool 中。

                    后續(xù)的查詢都是先從 Buffer Pool 中找,沒有命中再去硬盤加載,減少硬盤 IO 開銷,提升性能。

                    更新表數(shù)據(jù)的時(shí)候,也是如此,發(fā)現(xiàn) Buffer Pool 里存在要更新的數(shù)據(jù),就直接在 Buffer Pool 里更新。

                    然后會(huì)把“在某個(gè)數(shù)據(jù)頁上做了什么修改”記錄到重做日志緩存(redo log buffer)里,接著刷盤到 redo log 文件里。

                    刷盤時(shí)機(jī)

                    InnoDB 存儲(chǔ)引擎為 redo log 的刷盤策略提供了 innodb_flush_log_at_trx_commit 參數(shù),它支持三種策略:

                    • 0 :設(shè)置為 0 的時(shí)候,表示每次事務(wù)提交時(shí)不進(jìn)行刷盤操作
                    • 1 :設(shè)置為 1 的時(shí)候,表示每次事務(wù)提交時(shí)都將進(jìn)行刷盤操作 (默認(rèn)值)
                    • 2 :設(shè)置為 2 的時(shí)候,表示每次事務(wù)提交時(shí)都只把 redo log buffer 內(nèi)容寫入 page cache

                    另外,InnoDB 存儲(chǔ)引擎有一個(gè)后臺(tái)線程,每隔1 秒,就會(huì)把 redo log buffer 中的內(nèi)容寫到文件系統(tǒng)緩存(page cache),然后調(diào)用 fsync 刷盤。

                    也就是說,一個(gè)沒有提交事務(wù)的 redo log 記錄,也可能會(huì)刷盤

                    標(biāo)簽: MySQL
                    主站蜘蛛池模板: 万荣县| 宜良县| 河东区| 屏边| 资兴市| 绵阳市| 永登县| 苏尼特右旗| 紫金县| 富阳市| 千阳县| 冷水江市| 习水县| 咸宁市| 孝昌县| 商水县| 称多县| 奉节县| 巨鹿县| 深泽县| 嘉黎县| 南汇区| 灵川县| 包头市| 南皮县| 嘉祥县| 兴宁市| 陆丰市| 临夏市| 台中县| 锦屏县| 乐都县| 那曲县| 馆陶县| 边坝县| 武鸣县| 遂溪县| 衡山县| 全州县| 玉树县| 临漳县|