InnoDB 数据文件详解:表空间与存储机制
InnoDB 是 MySQL 中最常用的存储引擎,其数据存储机制与 MyISAM 有显著差异。InnoDB 采用 “表空间”(Tablespace)管理数据和索引,支持多种表空间模式,灵活适应不同场景。本文详细解析 InnoDB 数据文件的组成、表空间类型及存储特性。
InnoDB 数据文件的核心组成
InnoDB 的数据存储依赖两类关键文件:表空间文件和日志文件,其中表空间文件是数据和索引的主要载体。
1. 表空间文件(存储数据和索引)
- 作用:统一存储表结构、行数据、索引等信息(MyISAM 则分开存储为
.MYD数据文件和.MYI索引文件)。 - 常见文件格式:
.ibd:独立表空间文件(每个表对应一个)。ibdata1、ibdata2…:系统表空间文件(共享表空间,可包含多个表的数据)。
2. 日志文件(保障数据一致性)
- 重做日志(Redo Log):
文件名为ib_logfile0、ib_logfile1等,记录数据修改操作,用于崩溃恢复(确保事务持久性)。 - 撤销日志(Undo Log):
通常存储在系统表空间中(或独立 undo 表空间),记录事务修改前的数据,用于事务回滚和 MVCC(多版本并发控制)。
InnoDB 表空间类型
InnoDB 支持两种表空间管理模式:共享表空间和独立表空间,可通过配置参数切换。