MySQL 8.4.9 里那个会吃满磁盘的 InnoDB 修复:Bug #38370155
MySQL 8.4.9 LTS(2026-04-21)表面是维护版,但里面有一个会让生产实例磁盘爆满的 InnoDB 修复:Bug #38370155。如果你在 8.4.8 或更早版本上出现过磁盘空间莫名其妙爆满,大概率与它有关。
场景
Bug #38370155:CREATE INDEX + 高 innodb_parallel_read_threads 可能导致磁盘空间耗尽。8.4.9 修复了该问题,严重时会造成实例故障。
innodb_parallel_read_threads 控制并行读取的线程数,在 CREATE INDEX / ALTER TABLE 这类需要扫表的 DDL 中会用到。将该值调高(如超过 16)后,建大表索引时会并行读表并写排序临时文件,磁盘占用失控,直接打满数据盘。
自查条件:你正在运行 8.4.8 或更早版本,生产环境将 innodb_parallel_read_threads 调高(>16),并且建过大的二级索引——这种情况需要重视。
排查与应对
先查看当前值:
SELECT @@innodb_parallel_read_threads;
如果之前设置过高且近期建索引时磁盘紧张,建议:
- 升级到 8.4.9+(或更高维护线),Bug #38370155 已修复;
- 升级前避免用默认线程数直接跑大表 DDL,必要时临时调低该参数;
- 升级后重建或新增索引时,观察磁盘空间曲线,确认异常增长已消失。
同版还修了这些值得知道的
8.4.9 不止修了并行读问题:
- 虚拟生成列 + LOCK=NONE 删列失败(Bug #83557 / #24962142)已修复,更多表结构变更可走 Online DDL、减少停机;
- zlib 升级到 1.3.2(影响
COMPRESS()和压缩连接场景); - 大型表全文索引(FTS)构建的内存使用优化;
- 多值索引(multi-value indexes)相关问题修复;
- 大量大 IN 子句查询的 SQL parser 内存占用过高已优化(Bug #33390851);
- 捆绑 OpenSSL 升级(社区版 3.5.5)。
结论
升维护版别只盯安全补丁。类似 Bug #38370155 这种 DDL 吃磁盘的稳定性修复,对运维的影响可能比多数 CVE 更直接。8.0 已 EOL,继续留在 8.4 LTS 线的记得跟进维护版本。