MySQL 9.7 LTS 最新版本发布

InnoDB 架构图 (MySQL 5.7)FROM:

https://dev.mysql.com/doc/refman/5.7/en/innodb-architecture.html

InnoDB 架构图 (MySQL 9.7)FROM:https://dev.mysql.com/doc/refman/9.7/en/innodb-architecture.html

2026 年 4 月 21 日:MySQL 9.7.0 LTS 发布,成为新的长期支持版本【Long-Term Support (LTS) 版本线】。

  1. Change Buffer

Change Buffer(早期版本叫 Insert Buffer)在 InnoDB 架构中既有内存部分,也有磁盘部分。

|-----------------------------|----------------|--------------------|
| 对比项 | MySQL 5.7 | MySQL 9.7 |
| 支持索引类型 | 仅非唯一二级索引 | 二级索引 + 全文索引 + 空间索引 |
| innodb_change_buffering 默认值 | all | none |
| 合并调度机制 | 集中合并,易出现 IO 峰值 | 分时限流合并,IO 波动平缓 |

  1. Log Buffer

|---------|---------------------|------------------------|
| 对比项 | MySQL 5.7 | MySQL 9.7 |
| 默认内存大小 | 16MB | 64MB |
| 参数修改方式 | 只读,必须重启生效 | 支持 SET GLOBAL 在线动态调整 |
| 刷盘与缓存架构 | 固定刷盘策略,redo/undo 耦合 | 自适应刷盘,undo buffer 独立拆分 |

  1. Adaptive Hash Index (AHI)

|---------|-----------|----------------------------------------------|
| 对比项 | MySQL 5.7 | MySQL 9.7 |
| 锁机制 | 全局单一锁 | 分区细粒度锁 |
| 默认分区数量 | 8 | 64 |
| 分区数修改权限 | 只读,无法在线修改 | 支持在线动态调整 |
| 索引管控粒度 | 全局统一开关 | 支持单表单独开启 / 关闭 |
| 缓存淘汰策略 | 基础热度判定 | 综合访问频率+ 最近访问时间的淘汰策略(先踢低热度 → 再踢中热度 → 尽量保留高热度) |

MySQL 5.7 磁盘结构:所有核心元数据都塞在系统表空间 ibdata1,导致空间不可回收、耦合度高。

MySQL 9.7 磁盘结构:模块化拆分,数据字典、Undo、临时表空间独立,新增 General Tablespaces。

对每一类简要做一个对比:

|---------------------|--------------------------------------|------------------------------------------|
| 组件 | MySQL 5.7 | MySQL 9.7 |
| 数据字典DD | 在 ibdata1 + .ibd 文件,双份元数据(二边同步维护代价高) | 独立 Data Dictionary Tablespace,.ibd 不再存字典 |
| Undo | 默认在 ibdata1,空间不可收缩 | 独立 Undo Tablespaces,支持多个文件,在线收缩 |
| 临时表空间 | 单文件,性能差 | 多文件 InnoDB 临时表空间,支持事务和索引 |
| DoubleWrite Buffer | 必需,位于 ibdata1 | Atomic I/O 替代,适配 NVMe |
| General Tablespaces | 不支持 | 新增,支持多表共享 |