MySQL版本历史与主要特性

  • 近期,据可靠的非正式消息,MySQL可能很快会发布新的版本管理模式:通过长期稳定版(Long-term Support)和短期创新版本(Innovation Releases)的方式进行管理。如果采用这种模式,将会更加有利于新特性新功能的引入,同时保持LTS的长期处于较稳定的状态(可以参考ClickHouse的版本管理现状),缺点则是版本会非常多,对新手不是那么友好。另外,因为MySQL 5.7的生命周期将于今年10月正式结束,如果届时依旧没有新的版本的话,MySQL 8.0就会是唯一的稳定版,通常对于快速发展的开源软件来说,这并不健康。所以,前述的消息虽然是非正式的,但是相信是非常可靠的。那么新的版本是号会是8.1、9.0、或者23、2023,拭目以待。

    本文总结了过去20年,MySQL的版本发展历史,回顾一下其重大功能发布的情况,以及大版本发布的节奏。

    MySQL 5.0

    在2003年12月,MySQL 5.0 alpha版本发布,2005年3月Beta版本发布(参考 参考),并于2005年10月发布5.0.15生产版本(相当于GA)。注意到,这期间MySQL几乎在以每个月1~2个小版本的速度在快速迭代。最终,5.0版在2011年12月终止生命周期,历时8年。在这个版本中,MySQL新增了:

    • 存储过程
    • 触发器
    • 视图
    • XA事务支持

    也让MySQL成为了一个“像样”的关系型数据库。

    MySQL 5.1

    在MySQL 5.0.15 GA之后,很快MySQL 5.1版本也进入了研发阶段。2005年12月,内部就开始了5.1的研发,它的第一个RC版本是5.1.22版本,于2007年9月发布;2008年11月,5.1.30版本正式GA。直到2013年12月其生命周期结束,发布了最后一个小版本5.1.73,历时也是8年。该版本的主要新特性包括了:

    • 分区表
    • 基于行的复制
    • 插件化的API架构
    • 调度事件(Event scheduler)
    • 发布了MySQL集群版(MySQL Cluster)

    历史版本长图链接

    SUN收购MySQL,Oracle收购SUN

    期间,于2008年,SUN也正式收购了MySQL;于2010年,Oracle收购了SUN。同时,Monty(Michael Widenius)宣布开始发展MySQL的分支MariaDB。

    MySQL 5.5

    MySQL 5.5版本于2009年开始研发,并于2010年9月发布5.5.6 RC版本,于2010年12月发布5.5.8 GA版,该版本最终于2015年12月结束标准支持(Premier Support Ends),并于2018年12月结束扩展支持(Extended Support Ends),其最后一个版本是2018年10月的5.5.62版本。5.5版本并没有引入太多的新特性,大的特性包括:

    • 默认存储引擎变更为InnoDB
    • 提升了InnoDB的性能、扩展性等
    • 引入了半同步支持(semi-sync)
    • 支持了performance schema

    MySQL 5.6

    2011年4月,5.6的第一版本发布,并于2013年2月发布5.6.10 GA版。并于2018年2月结束标准支持(Premier Support Ends),于2021年2月结束扩展(Extended Support Ends)。2021年1月的5.6.51为其最后一个版本。在5.6版本中,主要是正对5.5的特性的一些补充和增强,具体的,MySQL引入的主要特性包括:

    • 新增GTID功能
    • 新增了MemcacheD API
    • InnoDB新增了全文搜索功能
    • 新增了延迟复制功能
    • 增强了InnoDB并发性与扩展性
    • 时间类型新增了微妙精度
    • 提供了online ddl功能
    • 新增Index Condition pushdown (ICP)、Multi-Range-Read (MRR)以提高性能
    • 优化了子查询性能
    • 增强了PERFORMANCE_SCHEMA

    在具体的实践中,在5.6发布之后,5.5版本使用的就很少了。

    MySQL 5.7

    5.7的第一个对外版本是在2013年04月发布,2015年10月发布5.7.9 GA版本,于2020年10月结束了标准支持,将于2023年10月结束扩展支持。虽然,今年10月5.7版本的官方支持就将全部结束,但是因为这个版本在当前互联网架构中,被广泛使用,所以,该版本在当前依旧占比非常大。5.7版本,新引入的特性主要包括:

    • 继续增强了Online DDL
    • 在用户、安全上做了很大的增强
    • 支持了innodb_buffer_pool_size的动态调整
    • 提供了原生的JSON支持
    • 支持了生成列
    • 支持了Group Replication
    • 支持了多源复制

    MySQL 8.0

    8.0是当前的主流版本,而且如果MySQL官方再不发布新的版本,因为5.7将在今年10月停止支持,那么8.0就可能成为唯一的主流版本了。该版本于2016年9月发布第一个版本,并于2018年4月发布8.0.11 GA版本。当前,最新版本为2023年4月发布8.0.33版本。MySQL 8.0版本引入的新特性包括:

    • 新增了角色(role)支持批量权限管理
    • 支持了窗口函数
    • 支持了CTE(Common table expressions)
    • 新增备份锁(Backup lock)
    • Hash Join支持
    • GIPK(Generated invisible primary keys)隐式主键
    • 原子DDL
    • 部分系统表默认使用InnoDB引擎
    • 大量InnoDB改进

    据非正式消息(参考),MySQL可能很快会发布新的版本管理模式:通过长期稳定版和短期创新版本的方式进行管理。这种模式下,将会更加有利于新特性新功能的引入,并保持LTS的长期处于较稳定的状态。

    MySQL新的版本管理:参考

    另外,过去2~3年,Oracle/MySQL官方最重要的发布应该还是HeatWave分析引擎,后续再考虑单独介绍,本文不详述。

    关于Oracle/SUN/MySQL/InnoDB/MariaDB

    InnoDB最早由Heikki(如果看过MySQL/InnoDB的代码,对这个名字应该不陌生)在1995年开发,2000年时,InnoDB开始与MySQL合作,并与2001年3月之后开始合并到MySQL代码中对外发布,对应的MySQL版本是3.23.38版本(2001年5月)。

    MySQL 3.23.x系列的版本,可以说是MySQL历史上的一个重要版本,该版本自1999年7月发布第一个alpha版本3.23.0,于2001年1月发布3.23.31 GA(当时叫Production版本),最后一个版本为2003年9月发布的3.23.59版本。该版本在引擎层面:

    • 引入MyISAM替换了之前的ISAM引擎
    • 新增了InnoDB存储引擎
    • 引入了BerkeleyDB(BDB)引擎

    之后几年,MySQL也一直希望能够与InnoDB达成更进一步的合作协议,但是并没有成功,反而在2005年10月,Oracle收购了Innobase。之后,2008年,SUN于2008年以10亿美金收购了MySQL;很快,2010年,Oracle收购了SUN,所以,同时也顺手收购了MySQL。虽然,当时MySQL社区(Monty为代表)做了很多努力,想阻止这一交易,但是最终以失败告终。

    根据Wikipedia的信息,实际是WikiLeaks信息(参考),在Oracle提出收购要求之后,美国司法部曾向欧盟施压,要求无条件同意该收购。最终,欧盟确实无条件的同意了收购。但,其中是否有因果关系,并不得而知。另据WikiLeaks的信息,此次交易金额约为74亿美金(参考)。

    也是在此之后,Monty就很快从MySQL 5.1/5.5的代码中从新克隆出新的分支:MariaDB。

    参考链接

    Leave a Reply

    Your email address will not be published. Required fields are marked *