Jw
首页
技术
英语
首页
技术
英语
  • MySQL

    • MySQL 基础
    • 环境变量配置(PATH)
    • SQL 语法与分类
    • MySQL 数据类型
    • SQL - DDL 数据定义语言
    • SQL - DML 数据操作语言
    • SQL - DQL 数据查询语言
    • SQL - DCL 数据控制语言
    • MySQL 函数
    • SQL 约束
    • SQL 外键约束
    • 多表关系
    • 多表查询(连接查询)
    • 隐式内连接 vs 显式内连接
    • 子查询
    • 多表查询案例
    • 事务
    • 并发事务问题与隔离级别
    • MySQL 体系结构与存储引擎
    • 索引概述
    • 索引结构
    • 索引分类
    • 索引语法
    • SQL 性能分析
    • 索引使用
    • 索引设计原则
    • SQL 优化 - 插入数据与主键优化
    • SQL 优化 - order by 与 group by
    • SQL 优化 - limit / count / update
    • 视图
    • 存储过程
    • 存储过程 - 变量
    • 存储过程 - 流程控制、游标与条件处理
    • 存储函数
    • 触发器
    • 锁概述与全局锁
    • 表级锁
    • 行级锁
    • InnoDB 逻辑存储结构
    • InnoDB 架构
    • 事务原理(redo / undo log)
    • MVCC
    • MySQL 系统数据库
    • MySQL 常用工具
    • 数据备份与导入导出
    • 错误日志与二进制日志
    • 查询日志与慢查询日志
    • 主从复制 - 概述与原理
    • 主从复制 - 搭建
    • Mycat 配置
    • Mycat 垂直拆分与水平拆分
    • Mycat 分片规则
    • Mycat 管理与监控
    • Mycat 读写分离 - 一主一从
    • Mycat 读写分离 - 双主双从

InnoDB 逻辑存储结构

InnoDB 的数据按 表空间 → 段 → 区 → 页 → 行 逐层组织;页是磁盘管理的最小单元,行是数据存放的基本单位。

一、层次结构

Tablespace(表空间,xxx.ibd)
└── Segment(段:数据段 / 索引段 / 回滚段)
    └── Extent(区,1MB)
        └── Page(页,16KB)
            └── Row(行:Trx_id / Roll_pointer / col1 / col2 ...)
层级说明
表空间(ibd 文件)一个 MySQL 实例可以对应多个表空间,用于存储记录、索引等数据
段分为数据段(Leaf node segment)、索引段(Non-leaf node segment)、回滚段(Rollback segment)
区表空间的单元结构,每个区大小为 1MB;默认页大小 16K,所以一个区有 64 个连续的页
页InnoDB 存储引擎磁盘管理的最小单元,每页默认 16KB
行InnoDB 存储引擎数据是按行进行存放的
  • InnoDB 是索引组织表:数据段就是 B+ 树的叶子节点,索引段即 B+ 树的非叶子节点。段用来管理多个区(Extent)。
  • 为了保证页的连续性,InnoDB 每次从磁盘申请 4~5 个区。

二、行格式中的隐藏字段

每行记录除业务字段外,还有两个隐藏字段:

隐藏字段含义
Trx_id每次对某条记录进行改动时,都会把对应的事务 id 赋值给 trx_id 隐藏列
Roll_pointer每次对某条记录进行改动时,都会把旧的版本写入 undo log,这个隐藏列相当于一个指针,可以通过它找到该记录修改前的信息

Trx_id 与 Roll_pointer 是 MVCC 的基础,详见 MVCC。

三、查看表空间文件

-- 查看表的表空间与行格式等信息
SHOW CREATE TABLE tb_user;

-- 查看 InnoDB 全局状态(含表空间、缓冲池、日志等信息)
SHOW ENGINE INNODB STATUS;
# 数据目录下的表空间文件(每表一个 .ibd)
ls /var/lib/mysql/itcast/

速查

-- 查看表的存储引擎与表空间参数
SHOW CREATE TABLE tb_user;

-- 查看 InnoDB 运行状态(缓冲池、日志、锁等待等)
SHOW ENGINE INNODB STATUS;
# 表空间文件位置:每个表一个 xxx.ibd
ls /var/lib/mysql/库名/
层级一句话
表空间存记录与索引,对应 xxx.ibd
段数据段 = B+ 树叶子,索引段 = 非叶子
区1MB,固定 64 个页
页16KB,磁盘管理最小单元
行含 Trx_id、Roll_pointer 两个隐藏字段

相关

  • InnoDB 架构:内存结构、磁盘结构、后台线程
  • MVCC:隐藏字段与 undo log 版本链
  • MySQL 体系结构与存储引擎:InnoDB / MyISAM / Memory 对比
最近更新: 2026/10/25 11:01
Contributors: liujw
Prev
行级锁
Next
InnoDB 架构