欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL中的物理存儲結(jié)構(gòu)詳解

 更新時間:2025年03月12日 09:56:08   作者:冰糖心書房  
這篇文章主要介紹了MySQL中的物理存儲結(jié)構(gòu)用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

MySQL的物理存儲結(jié)構(gòu)主要由數(shù)據(jù)文件、日志文件及存儲引擎特定的組織方式構(gòu)成。以下是其核心組成部分的詳細說明:

1. 數(shù)據(jù)目錄結(jié)構(gòu)

MySQL的數(shù)據(jù)存儲在datadir配置指定的目錄中,通常包含以下內(nèi)容:

數(shù)據(jù)庫目錄:每個數(shù)據(jù)庫對應(yīng)一個子目錄(如/var/lib/mysql/db_name),內(nèi)部存放表的結(jié)構(gòu)和數(shù)據(jù)文件。

表文件:不同存儲引擎的表文件類型不同:

  • InnoDB.ibd(獨立表空間文件)和.frm(8.0之前的結(jié)構(gòu)文件,8.0后元數(shù)據(jù)存儲在數(shù)據(jù)字典中)。
  • MyISAM.MYD(數(shù)據(jù)文件)、.MYI(索引文件)和.frm(結(jié)構(gòu)文件)。
  • Memory引擎:數(shù)據(jù)僅存儲在內(nèi)存中,無磁盤文件(表結(jié)構(gòu)仍存于.frm)。

2. InnoDB存儲引擎的物理結(jié)構(gòu)

InnoDB采用索引組織表(IOT),數(shù)據(jù)按主鍵順序存儲,物理結(jié)構(gòu)分層如下:

表空間(Tablespace)

  • 系統(tǒng)表空間(ibdata1):存儲數(shù)據(jù)字典、Undo日志(8.0前)、Change Buffer等。默認包含所有表的數(shù)據(jù)(若未啟用獨立表空間)。
  • 獨立表空間(.ibd文件):每個表獨立存儲數(shù)據(jù)和索引(默認啟用),提升管理靈活性。
  • 通用表空間:可存儲多個表的數(shù)據(jù),通過CREATE TABLESPACE創(chuàng)建。
  • Undo表空間(8.0+):獨立存儲Undo日志,默認undo_001undo_002。
  • 臨時表空間:存儲臨時表和排序操作數(shù)據(jù)。

存儲單元層級

  • 段(Segment):由多個區(qū)組成(如數(shù)據(jù)段、索引段、回滾段)。
  • 區(qū)(Extent):由連續(xù)64個頁構(gòu)成(默認1MB,每頁16KB)。
  • 頁(Page):最小磁盤管理單元(16KB),包含頁頭、行記錄、頁尾等信息。
  • 行(Row):數(shù)據(jù)按行格式(如Compact、Dynamic)存儲,Dynamic格式處理大字段時僅存儲溢出頁指針。

日志文件

  • Redo Log(ib_logfile)*:物理日志,記錄數(shù)據(jù)頁修改,用于崩潰恢復(fù)。
  • Undo Log:邏輯日志,支持事務(wù)回滾和MVCC(8.0后存于Undo表空間)。

3. MyISAM存儲引擎的物理結(jié)構(gòu)

數(shù)據(jù)與索引分離:表由三個文件組成:

  • .frm:表結(jié)構(gòu)定義(8.0前)。
  • .MYD:數(shù)據(jù)文件,按插入順序存儲。
  • .MYI:索引文件,支持全文索引和壓縮表。

特性:表級鎖、無事務(wù)支持,適合讀多寫少場景。

4. 日志文件

  • 二進制日志(binlog):記錄所有數(shù)據(jù)更改操作,用于主從復(fù)制和點恢復(fù)。
  • 錯誤日志(error log):記錄服務(wù)器運行狀態(tài)和錯誤信息。
  • 慢查詢?nèi)罩荆╯low query log):記錄執(zhí)行時間超過閾值的SQL語句。

5. 內(nèi)存結(jié)構(gòu)輔助

  • 緩沖池(Buffer Pool):InnoDB緩存數(shù)據(jù)頁和索引,減少磁盤I/O。
  • Change Buffer:緩存非唯一索引的變更,提升寫入性能。

版本差異與注意事項

  • MySQL 8.0+:移除.frm文件,元數(shù)據(jù)存于數(shù)據(jù)字典(mysql.ibd);默認Undo日志獨立。
  • 配置選項innodb_file_per_table控制是否啟用獨立表空間。
  • 行溢出處理:Dynamic行格式對大字段(如BLOB)僅存儲20字節(jié)指針,數(shù)據(jù)存于溢出頁。

總結(jié)

  • InnoDB:適合事務(wù)處理,通過表空間、頁結(jié)構(gòu)和日志機制保障ACID。
  • MyISAM:輕量級,適合靜態(tài)數(shù)據(jù),物理結(jié)構(gòu)簡單但缺乏事務(wù)支持。
  • 日志系統(tǒng):保障數(shù)據(jù)持久性和系統(tǒng)可恢復(fù)性。

理解物理存儲結(jié)構(gòu)有助于優(yōu)化數(shù)據(jù)庫設(shè)計(如選擇行格式、分區(qū)策略)和故障排查(如分析文件損壞問題)。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • mysql 使用存儲過程實現(xiàn)樹節(jié)點的獲取方法

    mysql 使用存儲過程實現(xiàn)樹節(jié)點的獲取方法

    這篇文章主要介紹了mysql 使用存儲過程實現(xiàn)樹節(jié)點的獲取方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • SQL中寫入包含有英文單引號“ '''' ”失敗問題深入詳解

    SQL中寫入包含有英文單引號“ '''' ”失敗問題深入詳解

    這篇文章主要介紹了SQL中寫入包含有英文單引號“ ' ”失敗問題深入詳解,列舉了具體實例講解,有感興趣的同學(xué)可以研究下
    2021-03-03
  • 關(guān)于Mysql查詢帶單引號及插入帶單引號字符串問題

    關(guān)于Mysql查詢帶單引號及插入帶單引號字符串問題

    本文主要介紹的是用mysql_real_escape_string對用戶提交的表單數(shù)據(jù)進行轉(zhuǎn)義處理和通過addslashes以及mysql_escape_string這3個類似功能的函數(shù)用法區(qū)別
    2013-04-04
  • mysql多表join時候update更新數(shù)據(jù)的方法

    mysql多表join時候update更新數(shù)據(jù)的方法

    如果item表的name字段為''就用resource_library 表的resource_name字段前面加上字符串Review更新它,他們的關(guān)聯(lián)關(guān)系在表resource_review_link中。
    2011-03-03
  • MySQL索引查詢的具體使用

    MySQL索引查詢的具體使用

    本文主要介紹了MySQL索引查詢的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • MySQL中Union子句不支持order by的解決方法

    MySQL中Union子句不支持order by的解決方法

    這篇文章主要介紹了MySQL中Union子句不支持order by的解決方法,結(jié)合實例形式分析了在mysql的Union子句中使用order by的方法,需要的朋友可以參考下
    2016-06-06
  • MySQL中的物理存儲結(jié)構(gòu)詳解

    MySQL中的物理存儲結(jié)構(gòu)詳解

    這篇文章主要介紹了MySQL中的物理存儲結(jié)構(gòu)用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • MySQL表數(shù)據(jù)文件損壞導(dǎo)致數(shù)據(jù)庫無法啟動的原因與解決方案

    MySQL表數(shù)據(jù)文件損壞導(dǎo)致數(shù)據(jù)庫無法啟動的原因與解決方案

    在日常的數(shù)據(jù)庫管理中,遇到MySQL表數(shù)據(jù)文件損壞的情況并不罕見,這種情況下,MySQL數(shù)據(jù)庫可能會無法正常啟動,給業(yè)務(wù)運行帶來嚴重影響,本文將探討如何診斷和解決MySQL表數(shù)據(jù)文件損壞導(dǎo)致的數(shù)據(jù)庫無法啟動問題,需要的朋友可以參考下
    2025-03-03
  • MySQL數(shù)據(jù)庫三種常用存儲引擎特性對比

    MySQL數(shù)據(jù)庫三種常用存儲引擎特性對比

    MySQL中的數(shù)據(jù)用各種不同的技術(shù)存儲在文件(或內(nèi)存)中,這些技術(shù)中的每一種技術(shù)都使用不同的存儲機制,索引技巧,鎖定水平并且最終提供廣泛的不同功能和能力。在MySQL中將這些不同的技術(shù)及配套的相關(guān)功能稱為存儲引擎。
    2016-01-01
  • MySQL中的自定義函數(shù)(CREATE FUNCTION)

    MySQL中的自定義函數(shù)(CREATE FUNCTION)

    這篇文章主要介紹了MySQL中的自定義函數(shù)(CREATE FUNCTION),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06

最新評論