尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

第 03 篇 InnoDB 的数据到底存在哪:从表空间到行格式

第 03 篇 InnoDB 的数据到底存在哪:从表空间到行格式 开篇钩子t_user里删掉 50 万行,.ibd文件为什么一点没变小?一行数据最长能存多少?为什么varchar(65535)建表会报错?这两个问题的答案藏在同一个地方:InnoDB 的物理存储结构。很多人把 InnoDB 当黑盒,SQL 能跑就完了。但只有理解了存储层,你才能真正看懂 B+ 树的高度、索引大小的计算、间隙锁的加锁范围,以及"为什么 OPTIMIZE TABLE 能让查询变快"。1. 存储层级:表空间 → 段 → 区 → 页 → 行InnoDB 的物理存储是一个严格的五层嵌套结构:表空间(Tablespace,.ibd 文件) └─ 段(Segment):叶子节点段 + 非叶子节点段 + 回滚段等 └─ 区(Extent):连续 64 个页 = 1 MB └─ 页(Page):固定 16 KB,InnoDB 与磁盘交互的最小单位 └─ 行(Row):具体的数据记录innodb_file_per_table=ON(5.7 默认开启)意味着每张表有自己独立的.ibd文件,表删除时空间立刻归还给 OS。关闭则所有表的数据都堆在共享表空间ibdata1,那个文件只增不减,是历史上著名的坑。区(Extent)的意义:InnoDB 申请磁盘空间时以区(1MB)为
返回列表