MySQL 基礎知識梳理學習(三)----InnoDB日誌相關的幾個要點

来源:https://www.cnblogs.com/xuliuzai/archive/2019/01/08/10236671.html
-Advertisement-
Play Games

1.REDO LOG 是用來做資料庫crash recovery的,是保證資料庫數據正確性、完整性及持久性的重要機制之一。在資料庫操作中,它保存了對InnoDB表中數據的修改記錄,所以也叫日誌文件。 2.日誌文件內部也是按照大小相等的頁面切割,頁面大小為512個位元組(回顧下數據頁是多大? )。考慮到 ...


1.REDO LOG 是用來做資料庫crash recovery的,是保證資料庫數據正確性、完整性及持久性的重要機制之一。在資料庫操作中,它保存了對InnoDB表中數據的修改記錄,所以也叫日誌文件。

2.日誌文件內部也是按照大小相等的頁面切割,頁面大小為512個位元組(回顧下數據頁是多大? )。考慮到機械硬碟的塊大小也是512位元組,所以日誌塊也是如此設計。

   解釋:這是因為寫日誌其實就是為了提高資料庫寫入吞吐量,如果每次寫入是磁碟塊大小的倍數,效率才是最高的,並且日誌將邏輯事務對資料庫的分散隨機寫入轉化成了順序的512位元組整倍數據的寫入,這樣就大大提高了資料庫的效率。

3.物理事務(Mini-transaction ,MTR)是相對邏輯事務而言的。(邏輯事務具有ACID四個特性,用來保證資料庫的完整性--要麼都做,要麼什麼都不做。)物理事務是對InnoDB存儲引擎而言的,在存儲引擎中,只要涉及到文件修改、文件讀取等物理操作,都離不開這個物理事務,可以說,物理事務是Buffer Pool中Page與文件中的一個橋梁。

4.InnoDB的REDO日誌不完全是物理日誌,它包含了部分邏輯意義。比如,插入一條記錄時,MTR記錄的是在一個頁面中寫入這條記錄,內容大致包括頁面號、文件號(表空間號)、以及這條記錄的值(包括每個列信息),這樣就有了邏輯概念。

5.一個邏輯事務由多個物理事務組成,用來保證資料庫的ACID特性。物理事務可以保證一次物理修改是完整的,即可以理解為一個底層的相對完整的操作。比如,在插入一條記錄的過程中,會包括寫一條回滾記錄及插入時寫入一個頁面等,那麼這些邏輯上是一個動作的物理寫入,就可以被認為是一個獨立的物理事務。

6.物理事務的作用過程:首先,在系統將一個頁面載入Buffer Pool時,需要一個新開始(mtr_start)或者一個已將開始的物理事務,載入時需要指定頁面的獲取方式,比如是用來讀取的還是用來修改的,根據獲取方式上鎖(寫,則上X鎖;讀,上S鎖),上鎖前,還需進行檢查,例如是否頁面已被上鎖,是否需要排隊等待等 。然後,當上鎖成功後,物理事務就會將這個頁面的記憶體結構存儲到memo動態數組中,然後這個物理事務就可以訪問這個頁面了。物理事務對頁面的訪問有兩種操作,一種是讀,另一種是寫。讀操作就是簡單讀取指定頁面內偏移及長度的數據。寫則是指定從某一偏移開始寫入指定長度的數據。同時,如果這個物理事務是寫日誌的,此時還需要對剛纔的寫操作記下日誌。最後,是物理事務的提交,主要是將這個物理事務產生的日誌寫入到InnoDB日誌系統的日誌緩衝區中,然後,等待時機(日誌刷盤機制),將緩衝區中的日誌數據刷到日誌文件中。

7.日誌緩衝區的存儲只是一個暫時的中間狀態,日誌緩衝區的大小可以通過參數innodb_log_buffer_size來設置。

8.日誌產生的作用,是將隨機頁面寫入變成順序日誌的寫入,從而用一個速度更快的寫入來保證速度較慢的寫入的完整性,已提高整體數據的性能。

9.REDO 日誌恢復 主要過程:(1)從日誌文件的固定位置找到最新的檢查點信息;(2)從最新的檢查點位置開始掃描日誌文件,做資料庫恢復。

10.InnoDB的REDO是在UNDO之前做的,是等到物理的資料庫操作都完成之後,才能在物理數據一致的基礎上去做一些邏輯的操作,即UNDO回滾操作。

 

-----主要部分內容參考梳理於網路知識,此僅為學習筆記,在此原創作者感謝!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一.安裝軟體 1.1.MYSQL安裝 下載mysql的repo源: 安裝mysql-community-release-el7-5.noarch.rpm包 安裝MYSQL 重啟服務: 登錄,並修改密碼: 1.2、nginx安裝 下載對應當前系統版本的nginx包 建立nginx的yum倉庫(預設yu ...
  • 某備份系統大量使用rsync來傳輸文件,但是偶爾會出現rsync客戶端在上傳數據的時候長時間卡死,本文記錄瞭解決問題的步驟。 本文只涉及rsync客戶端中IO相關邏輯,關於rsync的發送演算法並不涉及,服務端邏輯略有提到。 ...
  • Infi-chu: http://www.cnblogs.com/Infi-chu/ /usr/bin/env python執行時,先查找python解釋器的路徑,然後執行。/usr/bin/python執行時,直接執行這個路徑的python解釋器(已將python解釋器的路徑寫死)至於使用方面來說 ...
  • 一 基礎環境 節點 系統版本 MySQL版本 業務IP 心跳IP Master CentOS 7.5 MySQL 5.6 192.168.88.100 192.168.77.100 Slave CentOS 7.5 MySQL 5.6 192.168.88.101 192.168.77.101 VI ...
  • 1、Docker的四種網路模式 (1)docker四種網路模式如下: Bridge contauner 橋接式網路模式 Host(open) container 開放式網路模式 Container(join) container 聯合掛載式網路模式,是host網路模式的延伸 None(Close) ...
  • Linux 文件夾相關常用命令 查看 ls -la -l 列出詳細信息 -a 列出全部,包括.和.. 刪除 rm <folder> -rf -r 就是向下遞歸,不管有多少級目錄,一併刪除-f 直接強行刪除,不作任何提示的意思 創建 mkdir -m 770 <folder> -m owner許可權/o ...
  • (1)使用詳情: **************************** * 操作說明 * **************************** 1、修改Config文件夾中的Setting.json里的虛擬機設置(包括虛擬機存放的位置,運行記憶體和vhd的大小) Setting.json: 2 ...
  • 一 基礎環境 節點 系統版本 MySQL版本 業務IP 心跳IP Master01 CentOS 7.5 MySQL 5.6 192.168.88.100 192.168.77.100 Master02 CentOS 7.5 MySQL 5.6 192.168.88.101 192.168.77.1 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...