据姜老师从多个消息来源搜集到的信息显示,MySQL 数据库即将发布最新版本 —— MySQL 9.0(也可能是MySQL 8.1或MySQL 2023)。

这一消息无疑让广大数据库开发者和用户充满期待,毕竟自2018年4月19日MySQL 8.0正式版本(GA)发布以来已经过去了五年的时间。

时光如白驹过隙,世事如白云苍狗。

五年时间,除了 PostgreSQL 继续在崛起中,各种前沿技术不断创新与落地。

5年前,大家还在争论电车会不会有辐射。而5年后,即便是出租车,也大多升级为了新能源的纯电车型。

5年前,大家还在沉浸于 AlphaGo 战胜柯洁的讨论。而5年后,新一代的 AI —— ChatGPT 正在尝试改变人们未来生活的吃穿住行。

5年前,ARM 处理器大多运行在手机上,而5年后,数据中心越来越多地使用 ARM 处理器来完成服务的运行。

微软和苹果的个人 PC 操作系统也完成了对于 ARM 处理器的完美适配。

打开网易新闻 查看更多图片

相信5年后新版本的 MySQL 也将会在性能、安全性、易用性等方面带来诸多创新和突破。

最近段时间,不少小伙伴也询问姜老师 MySQL 下一个版本会有哪些改变。

今天姜老师就来大胆“猜测”,剧透下一代 MySQL 的几个新特性。

根据免责声明,姜老师的猜测仅供参考,不作为投资或研发建议等。

Let's go.

仲裁节点

MySQL 9.0 大概率会推出仲裁节点(或投票节点)的功能。

也就是这个节点只负责存储半同步复制(Semi-sync)或 MGR(MySQL Group Replication) 的二进制日志与相应 ACK 的应答,而不具体存储数据文件。

这与 MongoDB 中的 Arbiter 节点功能非常类似。

对于核心业务来说,由于容灾需求,通常需要3个机房或可用区(AZ)存储数据。

然而,这样会使得数据存储必须为3副本,从而导致服务成本的上升。

通过引入仲裁节点,可以使得数据存储成本降低1/3。

对类似腾讯、阿里、谷歌、脸书这样规模巨大的互联网企业,此举可大幅降低开支。

并行查询

MySQL 8.0 版本对优化器进行比较大的重构工作,并在 8.0.18 版本中推出了基于经典 Volcano 模型的执行引擎。

打开网易新闻 查看更多图片

该模型的关键思想是将所有操作建模为“迭代器”。

通过提供基本的初始化、迭代和终止接口,迭代器可以任意组合堆叠在一起,形成执行计划。

也正因为这个改进,在 MySQL 8.0.18 版本中,MySQL 数据库首次支持了 Hash Join 功能,打脸了一众曾经叫嚣 MySQL 没有 Hash Join 的 PGer。

同时,在早先的 MySQL 8.0.14 版本中,MySQL 数据库也第一次支持了并行查询(Parallel Query)功能。

虽然,这个功能仅限于对 InnoDB 存储引擎聚集索引的并行查询。

但其在存储引擎接口层,提供了并行功能, 为后续的发展提供了无限的想象空间。

也因为上述两个架构基础,不少云数据库厂商在这几年中推出了基于 MySQL 的并行查询功能,并在 TPC-H 的查询中大幅领先 Vanilla MySQL。

某些 SQL 的领先幅度甚至可达百倍!

所以,MySQL 9.0 会坐视自己原版的复杂查询能力比其他分支版落后这么多吗?

是不是不太可能?

此外,别忘了,在最近的1年的时间里,MySQL 已推出了 OLTP、OLAP、ML(Marchine Learning) 一站式数据库产品 MySQL Heatweave。

在 MySQL 8.0.31 版本中也已经集成了 Heatweave 新一代 Hypergraph Optimizer。

将 Heatweave 中的部分并行查询能力赋能给原生基于 InnoDB 行记录存储的执行,结合火山引擎模型,对 MySQL 官方来说,这还不是 piece of breeze 么?

新的版本管理

说句实话,MySQL 8.0 的版本质量被不少专业内核研发人员吐槽。

这可能也是姜老师从业这么多年 MySQL 内核问题最多的版本,仅次于当年的 MySQL 5.1。

不过呢,这个原因和 MySQL 5.1 版本又不完全相同。

MySQL 8.0 的质量下降主要是版本管理发生了很大的变化。

你会发现在一个 8.0 的小版本中会引入一个很大的功能特性。如:

  • 8.0.12 支持快速加列功能;

  • 8.0.14 支持聚集索引并行查询功能;

  • 8.0.17 支持多值索引(Multi-Valued Index)功能;

  • 8.0.18 支持 Hash Join 功能;

  • 8.0.20 支持并行 Doublewrite 写入;

对比之前的版本,一个基线版本几乎不太引入很大的功能,或者说不会频繁的特性发布。

这些重要特性的引入必然伴随不少的新问题,而在 GA 版本中引入不稳定的特性,对用户体验是有明显的伤害。

因此,在下一代 MySQL 数据库中,版本会分为 MySQL LTS Release 和 MySQL Innovation Releases。

打开网易新闻 查看更多图片

MySQL LTS Release 版本每两年发布一次,基本只做 Bug 修复。

MySQL Innovation Release 版本的发布和管理节奏与现在保持一致。

即每季度发布一次,会引入一些新特性。

对于大部分普通用户来说,他们只需要使用 MySQL LTS Release,这个版本会相当稳定。

但他的升级节奏,又会比 MySQL 至少5年才升级大版本的传统,节奏上又加快了不少。

最后

不少同学问 InnoDB 存储引擎会有啥值得期待的大杀器。

基本不太会有了,因为它已近完美。

上层优化器的提升或许对 MySQL 意义更大。

至于万众期待的 MGR ,也是时候在新版本中扮演更为亮眼的角色了。

不管怎么说,在 OLTP 领域 MySQL 已然称王。

新一代的 MySQL 必将踏上征服北境 OLAP 的领地。

全域之王,或将指日可待。

以上。