💿 MySQL .ibd 文件 结构可视化

.ibd 文件是 MySQL InnoDB 存储引擎 的表空间文件,存储表的数据和索引。以 16KB 页面 为基本单位,多个页面组成 区(Extent,1MB),多个区组成 段(Segment)

.ibd 文件
大小可变
表空间 Tablespace
Space ID
段 Segment
1MB × N
区 Extent
1MB = 64页
页面 Page
16KB
INDEX 索引页
INODE 索引节点
SDI 数据字典
LOB_DATA 大对象
ALLOCATED 空闲页

🗂️ .ibd 文件是什么?

.ibd(InnoDB Data File)是 MySQL InnoDB 引擎 特有的表空间文件。

  • 每个表一个 .ibd 文件(默认开启 innodb_file_per_table
  • 存储表的数据索引
  • 文件大小随数据量动态增长
  • 路径:datadir/database/table.ibd

🏗️ 文件内部结构

  • 表空间(Tablespace):最高层,有唯一 Space ID
  • 段(Segment):分叶子段、非叶子段、Undo段
  • 区(Extent):64个连续页面 = 1MB
  • 页面(Page):最小IO单位 = 16KB

📄 页面(Page)类型

  • FIL_PAGE_INDEX (17855):B+树节点页
  • FIL_PAGE_INODE (17817):段索引节点
  • FIL_PAGE_SDI (17882):序列化字典信息
  • FIL_PAGE_LOB_DATA:大对象数据页
  • FIL_PAGE_TYPE_ALLOCATED (0):未分配空闲页
  • FIL_PAGE_UNDO_LOG:Undo 日志页

⚙️ 相关 MySQL 参数

  • innodb_page_size:页面大小,默认 16KB
  • innodb_file_per_table:每表独立 .ibd
  • innodb_buffer_pool_size:Buffer Pool 大小