1MariaDB
你可能了解过,MariaDB起初是MySQL的一个分支。早期两者发展模式相似。但2014年MariaDB 10[2]版开始,情况大为不同,MariaDB不再与MySQL版本匹配,抛弃了之前与MySQL 5.1和MySQL 5.5版本一致模式。
获得独立的版本体系允许MariaDB以更快的节奏独立创新,而不会因为与MySQL版本号相同而产生用户误导。例如,MariaDB曾经有5.2和5.3两个版本,但MySQL没有对应的版本号。
MariaDB发展迅速。紧接着2015年发布了MariaDB 10.1版本,2017年发布了MariaDB 10.2版本。此后,主版本每隔1-2年发布一次,2021年发布了MariaDB 10.6版。不过,每一个版本都提供5年的长期支持期限,这给工程团队带来了额外负担。
为了解决这个问题,MariaDB从2021年底开始实施“创新版模型”[3]。与 Ubuntu Linux发布模式类似,每个季度发布一个短期支持版本(支持 1 年),同时还会选择性发布LTS版本(至少5年)。短期支持版本和长期支持版本遵循相同的版本编号方式。
最近,MariaDB也将主版本从10改为11。产品经理Kaj Arno解释说,这主要是计划对优化器及其成本模型进行复杂修改所致。目前新11系列还没有LTS版本,最新的LTS版本是MariaDB 10.11[4],支持周期至2028年2月。
2MySQL
起初,在Oracle的领导下,MySQL持续遵循原有的版本发布周期。每隔几年,就会有大的功能版本,还会有“仅修复错误”的小版本。MySQL 5.5、MySQL 5.6和MySQL 5.7就是这种情况。
这种发布周期的好处是稳定!次要版本升级的风险相当低,如果需要回滚,可以通过快速更换二进制文件来完成,而不需要对数据执行任何操作。然而,与所有事情一样,都需要权衡。这种方法的缺点是新功能的推出缓慢以及主要版本之间的变化巨大,使得升级可能变得混乱且耗时。
在MySQL 8中发生了巨大的变化。MySQL 8看起来像是一个“长期迭代版”。虽然最初的GA版本于2018年4月发布,但我们已经五年没有看到新的主要版本了!这并不意味着MySQL 8没有创新;相反,现在的MySQL 8与2018年发布的版本有很大不同,因为在每个小版本中,都会引入新功能并修复错误。
如果您喜欢更快地获得新功能,那一定会喜欢这种新的发布方法。从理论上讲,这也意味着这些“功能版本”升级的风险较小,与过去主要版本需要数年的工作相比,这些升级只需要几个月的开发工作。然而,实际情况并非如此,因为某些版本包含新功能,其中的错误足以导致版本召回。更糟糕的是,MySQL 8一旦升级到新的版本,无法保证以前的版本能够操作相同的数据。
MySQL团队也认识到MySQL 8发布方式的问题。因此,接下来将引入新的发布模型[5]。该模型引入了Innovation版本,大约每季度发布一次,并且仅支持最新的创新版本(即,任何错误修复都将与新功能一起推出,并作为下一个创新版本推出,类似于MySQL 8.0现在的运行方式)。另一种版本是LTS版本,该版本每隔几年发布一次,并由Oracle支持8年(5年标准 + 3年扩展)。更多了解:技术译文 | 一文了解 MySQL 全新版本模型
MySQL LTS版本的运营方式与MySQL 8之前的MySQL方式类似。Innovation版本 有点类似于MySQL团队在某些时候使用的“里程碑版本”,但里程碑版本不被视为“生产就绪”,而是用于开发和预览版、创新版被视为“生产级质量”。
MySQL 8.0在此版本模型中占有特殊的地位。目前,它基本上是一个创新风格版本,但随着MySQL 8.0.34的发布,它将成为仅修复错误的LTS版本。
3差异
有趣的是,两个社区似乎都认识到我们 既需要高速创新又需要稳定,但也不能在同一个发行系列中真正同时拥有这两种方式。还需要控制支持和维护成本;因此,不能拥有太多积极支持的版本。
所以,MariaDB和MySQL都得出结论,他们需要同时注重创新速度的LTS版本和版本。
MySQL和MariaDB的LTS发布节奏也可能相似。MySQL的LTS版本大约每两年发布一次,这与MariaDB类似,“至少每隔一年”发布一次。不同之处在于,MariaDB还与主要Linux发行版合作,使MariaDB LTS版本与Linux发行版LTS发行计划保持一致,而MySQL没有声明任何此类目标。
存在差异的地方在于非LTS版本的处理方式。
当在有限时间内发布“仅修复错误”的版本时,MariaDB会选择“短期支持”路线,而MySQL选择支持滚动创新版本的路径,其中错误修复仅包含在最新的创新版本中。看看这些选择如何发挥作用将会很有趣:
- MariaDB的方法更加“用户友好”,因为它使用户可以更好地控制何时升级到下一个功能版本。
- MySQL的方法减少了支持版本所需的工作。
另一个重要的区别是支持什么类型的升级。
- MySQL仅支持升级到下一个主要版本(即,您不能直接从MySQL 5.6升级到MySQL 8)。
- MariaDB支持在升级中跳过主要版本。
参考资料
[1] lifecycle:
https://mariadb.com/docs/server/products/mariadb-enterprise-server/lifecycle/
[2] MariaDB 10: https://mariadb.com/kb/en/changes-improvements-in-mariadb-10-0/
[3] 创新版模型: https://mariadb.com/newsroom/press-releases/mariadb-announces-new-innovation-release-model/
[4] MariaDB 10.11: https://mariadb.com/kb/en/mariadb-server-10-11/
[5] 新的发布模型: https://blogs.oracle.com/mysql/post/introducing-mysql-innovation-and-longterm-support-lts-versions
如果您认为这篇文章有些帮助,还请不吝点下文章末尾的"点赞"和"在看",或者直接转发pyq,
近期更新的文章:《MySQL数据页损坏问题的场景》《MySQL导入导出数据表容量的一个问题场景》《查询字段的数量对查询效率的影响》
《定位磁盘性能问题的武器》《MySQL客户端连接提示1045错误的几种可能场景》
近期的热文:《推荐一篇Oracle RAC Cache Fusion的经典论文》
《"红警"游戏开源代码带给我们的震撼》
文章分类和索引:《公众号1200篇文章分类和索引》