首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

深入理解 MySQL BDB 系列(二):Meta 頁結構分析

     編輯:關於SqlServer

三、Meta 頁結構

3.1 Meta 頁頭結構

此結構為公共結構,供 B-tree meta 頁、Hash meta 頁、Queue meta 頁共用。

typedef struct _dbmeta33 {
    DB_LSN       lsn;               // LSN
    db_pgno_t    pgno;              // 當前頁號
    u_int32_t    magic;             // 魔數(除錯用)
    u_int32_t    version;           // 資料庫當前版本號
    u_int32_t    pagesize;          // 資料庫頁大小
    u_int8_t     encrypt_alg;       // 加密演算法
    u_int8_t     type;              // 資料庫類型(B-tree/Hash/Queue/Recno)
    u_int8_t     unused[2];         // 保留對齊
    db_pgno_t    root;              // 根頁頁號
    db_pgno_t    free;              // 自由頁鏈結頭
    u_int32_t    flags;             // 資料庫旗標
    u_int32_t    maxkeypage;        // 最大鍵/頁比例
    u_int32_t    minkeypage;        // 最小鍵/頁比例
    u_int32_t    crypto_magic;      // 加密魔數
    u_int8_t     uid[DB_UID_SIZE];  // 資料庫唯一識別碼
} DB_META;

關鍵欄位解析

  • magic:固定常數,用於驗證頁面完整性、偵測損壞
  • version:資料庫格式版本,支援向前/向後相容
  • pagesize:固定頁面大小(通常 4KB、8KB、16KB、32KB、64KB)
  • type:決定後續資料區域解析方式
  • root:B-tree/Hash 根頁位置,Queue 首頁位置
  • free:自由頁鏈結表頭,配置新頁時優先使用
  • uid:全域唯一識別碼,防止資料庫檔案混淆

Meta 頁通常位於資料庫檔案的第 0 頁(或固定位置),是資料庫開啟時最先讀取的關鍵頁面,包含整個資料庫的元資訊與配置參數。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved