国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MySQL中的redo log是什么

數據分析與開發 ? 來源:程序猿阿星 ? 作者:程序猿阿星 ? 2021-09-14 09:40 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

說到MySQL,有兩塊日志一定繞不開,一個是InnoDB存儲引擎的redo log(重做日志),另一個是MySQL Servce層的 binlog(歸檔日志)。

只要是數據更新操作,就一定會涉及它們,今天就來聊聊redo log(重做日志)。

redo log

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

比如MySQL實例掛了或宕機了,重啟時,InnoDB存儲引擎會使用redo log恢復數據,保證數據的持久性與完整性。

上一篇中阿星講過,MySQL中數據是以頁為單位,你查詢一條記錄,會從硬盤把一頁的數據加載出來,加載出來的數據叫數據頁,會放入到Buffer Pool中。

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

更新表數據的時候,也是如此,發現Buffer Pool里存在要更新的數據,就直接在Buffer Pool里更新。

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

理想情況,事務一提交就會進行刷盤操作,但實際上,刷盤的時機是根據策略來進行的。

小貼士:每條redo記錄由“表空間號+數據頁號+偏移量+修改數據長度+具體修改的數據”組成

刷盤時機

InnoDB存儲引擎為redo log的刷盤策略提供了innodb_flush_log_at_trx_commit參數,它支持三種策略

設置為0的時候,表示每次事務提交時不進行刷盤操作

設置為1的時候,表示每次事務提交時都將進行刷盤操作(默認值)

設置為2的時候,表示每次事務提交時都只把redo log buffer內容寫入page cache

另外InnoDB存儲引擎有一個后臺線程,每隔1秒,就會把redo log buffer中的內容寫到文件系統緩存(page cache),然后調用fsync刷盤。

也就是說,一個沒有提交事務的redo log記錄,也可能會刷盤。

為什么呢?

因為在事務執行過程redo log記錄是會寫入redo log buffer中,這些redo log記錄會被后臺線程刷盤。

除了后臺線程每秒1次的輪詢操作,還有一種情況,當redo log buffer占用的空間即將達到innodb_log_buffer_size一半的時候,后臺線程會主動刷盤。

下面是不同刷盤策略的流程圖

innodb_flush_log_at_trx_commit=0

為0時,如果MySQL掛了或宕機可能會有1秒數據的丟失。

innodb_flush_log_at_trx_commit=1

為1時, 只要事務提交成功,redo log記錄就一定在硬盤里,不會有任何數據丟失。

如果事務執行期間MySQL掛了或宕機,這部分日志丟了,但是事務并沒有提交,所以日志丟了也不會有損失。

innodb_flush_log_at_trx_commit=2

為2時, 只要事務提交成功,redo log buffer中的內容只寫入文件系統緩存(page cache)。

如果僅僅只是MySQL掛了不會有任何數據丟失,但是宕機可能會有1秒數據的丟失。

日志文件組

硬盤上存儲的redo log日志文件不只一個,而是以一個日志文件組的形式出現的,每個的redo日志文件大小都是一樣的。

比如可以配置為一組4個文件,每個文件的大小是1GB,整個redo log日志文件組可以記錄4G的內容。

它采用的是環形數組形式,從頭開始寫,寫到末尾又回到頭循環寫,如下圖所示。

在個日志文件組中還有兩個重要的屬性,分別是write pos、checkpoint

write pos是當前記錄的位置,一邊寫一邊后移

checkpoint是當前要擦除的位置,也是往后推移

每次刷盤redo log記錄到日志文件組中,write pos位置就會后移更新。

每次MySQL加載日志文件組恢復數據時,會清空加載過的redo log記錄,并把checkpoint后移更新。

write pos和checkpoint之間的還空著的部分可以用來寫入新的redo log記錄。

如果write pos追上checkpoint,表示日志文件組滿了,這時候不能再寫入新的redo log記錄,MySQL得停下來,清空一些記錄,把checkpoint推進一下。

本文到此就結束了,下篇會聊聊binlog(歸檔日志)。

小結

相信大家都知道redo log的作用和它的刷盤時機、存儲形式。

現在我們來思考一問題,只要每次把修改后的數據頁直接刷盤不就好了,還有redo log什么事。

它們不都是刷盤么?差別在哪里?

1 Byte = 8bit

1 KB = 1024 Byte

1 MB = 1024 KB

1 GB = 1024 MB

1 TB = 1024 GB

實際上,數據頁大小是16KB,刷盤比較耗時,可能就修改了數據頁里的幾Byte數據,有必要把完整的數據頁刷盤嗎?

而且數據頁刷盤是隨機寫,因為一個數據頁對應的位置可能在硬盤文件的隨機位置,所以性能是很差。

如果是寫redo log,一行記錄可能就占幾十Byte,只包含表空間號、數據頁號、磁盤文件偏移量、更新值,再加上是順序寫,所以刷盤速度很快。

所以用redo log形式記錄修改內容,性能會遠遠超過刷數據頁的方式,這也讓數據庫的并發能力更強。

其實內存的數據頁在一定時機也會刷盤,我們把這稱為頁合并,講Buffer Pool的時候會對這塊細說

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7335

    瀏覽量

    94755
  • 存儲
    +關注

    關注

    13

    文章

    4787

    瀏覽量

    90057
  • MySQL
    +關注

    關注

    1

    文章

    905

    瀏覽量

    29518

原文標題:聊聊 redo log 是什么?

文章出處:【微信號:DBDevs,微信公眾號:數據分析與開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    利用Last Log(Ramoops)排查系統問題:配置與實踐指南

    在嵌入式系統(如基于瑞芯微 RK3399 的 Android 設備)開發或維護,系統常因內核崩潰(Panic)、用戶空間異常等突發情況重啟,導致關鍵日志丟失。此時,Last Log(依托
    的頭像 發表于 02-05 13:54 ?238次閱讀
    利用Last <b class='flag-5'>Log</b>(Ramoops)排查系統問題:配置與實踐指南

    恒訊科技解析:如何安裝MySQL并創建數據庫

    安裝和管理MySQL不必復雜。只需幾分鐘,你就能在Linux服務器上搭建MySQL,創建第一個數據庫,甚至自動化備份——同時確保數據安全有序。 什么是 MySQL? MySQL 是一個
    的頭像 發表于 01-14 14:25 ?175次閱讀

    工業數據臺支持接入MySQL數據庫嗎

    工業數據臺完全支持接入MySQL數據庫 ,且通過數據同步、集成與治理等技術手段,能夠充分發揮MySQL在數據存儲與事務處理方面的優勢,同時彌補其在數據分析與共享能力上的不足,具體分析如下: 技術
    的頭像 發表于 12-04 11:23 ?375次閱讀
    工業數據<b class='flag-5'>中</b>臺支持接入<b class='flag-5'>MySQL</b>數據庫嗎

    CentOS 7下MySQL 8雙主熱備高可用架構全解

    Centos7部署MySQL8+keepalived雙主熱備(含Keepalived配置與GTID同步優化方案) 架構拓撲原理 GTID同步 VIP 192.168.1.100 MySQL主節點1
    的頭像 發表于 08-12 17:08 ?830次閱讀

    MySQL 8.0性能優化實戰指南

    作為一名運維工程師,MySQL數據庫優化是我們日常工作中最具挑戰性的任務之一。MySQL 8.0作為當前主流版本,在性能、安全性和功能上都有了顯著提升,但如何充分發揮其潛力,仍需要我們掌握正確的優化策略。
    的頭像 發表于 07-24 11:48 ?850次閱讀

    Texas Instruments LOG300DEVM和LOG300RGTEVM評估模塊數據手冊

    單一器件LOG300。該評估模塊可工作在3V至5.2V的單電源范圍內。對數檢測器模塊可以接受25μV至1.6Vp的輸入,而整個模擬前端(LNA + 對數檢測器的組合)支持6μVp至200mVp的輸入
    的頭像 發表于 07-21 10:15 ?677次閱讀
    Texas Instruments <b class='flag-5'>LOG</b>300DEVM和<b class='flag-5'>LOG</b>300RGTEVM評估模塊數據手冊

    Texas Instruments LOG200EVM放大器評估模塊 (EVM)數據手冊

    Texas Instruments LOG200EVM放大器評估模塊 (EVM) 是一個用于評估LOG200的開發平臺,LOG200是一款精密、高速對數放大器,集成了光電二極管偏置和暗電流校正功能
    的頭像 發表于 07-21 09:51 ?723次閱讀
    Texas Instruments <b class='flag-5'>LOG</b>200EVM放大器評估模塊 (EVM)數據手冊

    Texas Instruments LOG300 40MHz對數探測器數據手冊

    Texas Instruments LOG300 40MHz對數探測器是一款由低噪聲放大器 (LNA) 和對數探測器模塊組成的集成模擬前端 (AFE)。該器件支持高達40MHz的輸入頻率范圍
    的頭像 發表于 07-17 13:43 ?726次閱讀
    Texas Instruments <b class='flag-5'>LOG</b>300 40MHz對數探測器數據手冊

    MySQL數據備份與恢復策略

    數據是企業的核心資產,MySQL作為主流的關系型數據庫管理系統,其數據的安全性和可靠性至關重要。本文將深入探討MySQL的數據備份策略、常用備份工具以及數據恢復的最佳實踐,幫助運維工程師構建完善的數據保護體系。
    的頭像 發表于 07-14 11:11 ?726次閱讀

    企業級MySQL數據庫管理指南

    在當今數字化時代,MySQL作為全球最受歡迎的開源關系型數據庫,承載著企業核心業務數據的存儲與處理。作為數據庫管理員(DBA),掌握MySQL的企業級部署、優化、維護技能至關重要。本文將從實戰角度出發,系統闡述MySQL在企業環
    的頭像 發表于 07-09 09:50 ?717次閱讀

    介紹三種常見的MySQL高可用方案

    在生產環境,為了確保數據庫系統的連續可用性、降低故障恢復時間以及實現業務的無縫切換,高可用(High Availability, HA)方案至關重要。本文將詳細介紹三種常見的 MySQL 高可用
    的頭像 發表于 05-28 17:16 ?1236次閱讀

    MySQL數據庫是什么

    MySQL數據庫是一種 開源的關系型數據庫管理系統(RDBMS) ,由瑞典MySQL AB公司開發,后被Oracle公司收購。它通過結構化查詢語言(SQL)進行數據存儲、管理和操作,廣泛應用于Web
    的頭像 發表于 05-23 09:18 ?1205次閱讀

    全棧開發進階指南:LuatOS-log庫從入門到實戰!

    本文將帶你深入探索LuatOS系統log庫的核心原理與實戰技巧,通過代碼示例解析日志管理、錯誤追蹤及性能優化的最佳實踐,助力全棧工程師構建更穩健的物聯網應用。 今天,我們一起來認識LuatOS
    的頭像 發表于 05-15 16:12 ?2857次閱讀
    全棧開發進階指南:LuatOS-<b class='flag-5'>log</b>庫從入門到實戰!

    解鎖LuatOS-log庫:全棧工程師的日志管理實戰課!

    針對全棧開發者設計的實戰教程,本文聚焦LuatOS平臺log庫的高效使用,從基礎配置到高級調試策略,手把手教你搭建可擴展的日志系統,提升項目維護效率。 今天,我們一起來認識LuatOS的log
    的頭像 發表于 05-12 15:23 ?1511次閱讀
    解鎖LuatOS-<b class='flag-5'>log</b>庫:全棧工程師的日志管理實戰課!

    除了增刪改查你對MySQL還了解多少

    我們都知道MySQL服務器的默認端口為3306,之后就在這個端口號上等待客戶端進程進行連接(MySQL服務器會默認監聽3306端口)。
    的頭像 發表于 04-14 17:20 ?720次閱讀