知其然,知其所以然
MySQL / InnoDB 2026-09-28

Buffer Pool 脏页刷新

本机原本预期全表更新会让脏页堆起来,结果每0.3秒轮询一次,脏页数最多真实只摸到了1;就算把innodb_io_capacity真实调到100模拟慢速磁盘,脏页数依然真实压不住地被刷回0。

MySQL InnoDB 真实验证 动画演示
MySQL / InnoDB 2026-09-28

Buffer Pool 实例

本机的innodb_buffer_pool_size真实是128MB,@@innodb_buffer_pool_instances真实只有1——这不是配置疏漏,是InnoDB真实的硬规则:buffer pool小于1GB时会被强制压成1个实例。

MySQL InnoDB 真实验证 动画演示
MySQL / InnoDB 2026-09-28

Adaptive Hash Index

本机先发现意外:@@innodb_adaptive_hash_index真实是关闭的。真实打开之后第一遍耗时几乎没变,但adaptive_hash_searches已经真实在涨;第二遍真实降到108.6毫秒,快了约29%——热索引真的要跑热才有效果。

MySQL InnoDB 真实验证 动画演示
MySQL / InnoDB 2026-09-28

Redo Log Checkpoint

本机对着SHOW ENGINE INNODB STATUS的LOG部分每0.4秒轮询一次,一边跑全表更新:真实看到Log sequence number先跑到checkpoint前面,几轮之后checkpoint真实追了上来,两个数字又重新相等。

MySQL InnoDB 真实验证 动画演示
MySQL / InnoDB 2026-09-28

Doublewrite Buffer

本机磁盘上真实存在两个doublewrite文件;运行至今真实已经写过475个页面、分成43批;本文又真实跑了一次写入,计数器真实多了1页1批——doublewrite真实把多个脏页打包成一批一起写入。

MySQL InnoDB 真实验证 动画演示
MySQL / InnoDB 2026-09-28

Crash Recovery

本文真实在本机另起了一个一次性的MySQL实例,写入3条真实提交的数据,开一个事务插入第4条但不提交,真实kill -9模拟崩溃。重启后3条已提交数据全部真实还在,第4条未提交的真实消失了。

MySQL InnoDB 真实验证 动画演示
MySQL / InnoDB 2026-09-28

Page Compression

本机用同样100行高重复度文本,一张表ROW_FORMAT=COMPRESSED,一张表DYNAMIC不压缩:磁盘上真实的.ibd文件,压缩表172032字节,不压缩表393216字节——真实压缩比约2.28倍。

MySQL InnoDB 真实验证 动画演示
MySQL / InnoDB 2026-09-28

表空间与独立表空间

本机innodb_file_per_table真实是开着的:独立表空间的表DROP之后.ibd文件真实立刻从磁盘消失;共享表空间(ibdata1)的表,DROP之后共享文件真实一个字节都没有缩小。

MySQL InnoDB 真实验证 动画演示
MySQL / InnoDB 2026-09-28

簇索引页分裂

本机插入同样1000行数据,主键顺序插入真实触发14次页分裂;打乱顺序插入真实多触发19次——磁盘文件也真实证明:顺序插入344064字节,乱序插入425984字节,多花了约24%空间。

MySQL InnoDB 真实验证 动画演示
MySQL / InnoDB 2026-09-28

B+Tree 页合并

本机删掉表里70%的行之后,真实立刻查page merge计数器还是0;紧接着一条完全不命中数据的DELETE,真实触发了146次合并尝试、10次成功——页合并是被后续遍历顺带触发的。

MySQL InnoDB 真实验证 动画演示
MySQL / InnoDB 2026-09-28

OPTIMIZE TABLE 到底做了什么

本机对一张删了700行的表跑OPTIMIZE TABLE,MySQL真实提示会recreate加analyze。真实的效果也明显:文件从360448字节真实降到196608字节,缩了约45%。

MySQL InnoDB 真实验证 动画演示
MySQL / InnoDB 2026-09-28

表碎片和空间回收

本机删掉一张表一半的行,文件大小真实一个字节都没变,DATA_FREE字段全程真实都是0——真正能看出碎片的,只有OPTIMIZE TABLE前后真实的文件大小对比(缩小约28.6%)。

MySQL InnoDB 真实验证 动画演示
京ICP备2026067502号-1京公网安备11010502063487号