MySQL 开发团队于 12 日宣布 MySQL 8.0.0 开发里程碑版本(DMR)发布。部分用户可能对 MySQL 从 5.x 直接跳跃到 8.0 感到惊讶。事实上,MySQL 5.x 系列已延续多年,收购 Oracle 前为 5.1,之后维持 5.x 如 5.5、5.6、5.7 等。若按原发布节奏,5.6.x 可视为 6.x,5.7.x 可视为 7.x,此次仅为版本命名方式变更。
MySQL 8.0.0 亮点
事务性数据字典,完全脱离 MyISAM 存储引擎
真正将数据字典放入 InnoDB 表中,不再需要 FRM、TRG、PAR 文件。Information Schema 现为数据字典表的视图。原则上可完全无需 MyISAM 表类型,所有系统表均可置于 InnoDB。
SQL 角色
角色是一系列权限的集合。支持创建角色,给用户授予或去除角色,便于权限管理。
utf8mb4 字符集默认化
utf8mb4 字符集成为默认字符集,支持 Unicode 9。默认定序由 latin1_swedish_ci 改为 utf8mb4_800_ci_ai。
不可见索引
可将索引设为不可见,优化器不会使用但后台保持更新,需要时可恢复可见。
二进制数据位操作
支持对 VARBINARY/TINY/MEDIUM/LONG BLOB 进行位操作。
IPv6 和 UUID 操作改进
INET6_ATON() 返回 VARBINARY(16) 数据类型。新增 UUID_TO_BIN()、BIN_TO_UUID() 和 IS_UUID() 函数。IPv6 和 UUID 以 VARBINARY(16) 保存。
持续性全局变量
可用 SET PERSIST 设置持久性全局变量,重启后仍保留。
Performance Schema 改进
增加 100 多个索引,检索更快。
重构 SQL 分析器
解决旧分析器语法复杂性和自顶向下分析方式的限制,便于维护和扩展。
成本模型
InnoDB 缓冲区可估算主内存缓存区中的表和索引,辅助优化器选择访问方式。
直方图 Histograms
通过直方图统计数据分布,用于查询优化寻找方案。
扫描性能改进
改进 InnoDB 范围查询性能,全表及范围查询提升 5-20%。
重构 BLOB
加速片段读取/更新操作,优化 JSON 数据操作。
持久化自增值
InnoDB 将自增序列最大值持久化到 redo 日志,修复 Bug #199。
临时表
取消压缩临时表支持,元数据存储于内存。
其它重要改进和细节请参考官方文档。目前 8.0.0 为开发版本,安装包较大,Linux 平台二进制包近 1 GB。若用于生产环境且 8.0 未稳定,建议继续使用 5.7 系列,当前最新为 5.7.15 GA 版本。

