这个星球真有人在一个数据库里放10000张表(MySQL 8.4.2发布)

前些日子有个万年一遇的重大缺陷在社区里引发讨论,这直接导致 Oracle 例外发布了 MySQL 新版本,并下架了有缺陷的版本。

7月23日,MySQL 8.0.39 / 8.4.2 LTS / 9.0.2 Innovation 版本发布,该版本修复了3个Bug。

  1. InnoDB:在某些情况下,创建大量表(8001 个或更多)后,服务器无法成功重新启动。(Bug #36808732)
  2. InnoDB:改进了启动时的表空间文件扫描性能。(Bug #110402、Bug #35200385)
  3. 组复制:在来自异步通道到组复制的源上运行 CREATE TABLE ... SELECT 语句会导致副本出现错误。(错误 #36784284)

受影响的三个版本 MySQL 8.0.38 / 8.4.1 / 9.0.0 已下架,不再提供安装包下载。

并在对应版本的发版说明中增加了如下提示:

此版本不再可供下载。由于存在严重问题,该问题可能导致服务器在创建大量表(8001 个或更多)后无法重新启动,因此已将其删除。请升级到 MySQL 8.0.39。

下面使用 MySQL 8.4.2 演示第一个Bug,验证新版本。

启动 MySQL 8.4.2 容器镜像。

podman run --name mysql-8.4.2 -p 3842:3306 \ -e MYSQL_ROOT_HOST='%' -e MYSQL_ROOT_PASSWORD='1' \ -d mysql:8.4.2 --log-error-verbosity=3