MySQL - 版本



任何产品中引入版本是为了通过添加额外功能、删除不必要的组件、修复错误等来进行升级。版本控制过程对于使产品随着技术发展而更高效至关重要。

产品通常在完成测试阶段后发布:alpha 测试、beta 测试、gamma 测试,只有通过所有这些测试后才能生产。

安装 MySQL 时,必须选择要安装的版本及其分发格式。MySQL 的最新版本为8.0,其次要版本为8.0.34。安装 MySQL 服务器有两种方法:开发版和正式版。

开发版包含所有最新功能,但不建议在生产环境中使用。正式版更适合生产环境,可以在生产环境中稳定使用。

MySQL 版本

MySQL 是一款快速易用的 RDBMS,被许多大小企业使用。它由 MySQL AB(一家瑞典公司)开发、销售和支持。MySQL 于 1995 年 5 月 23 日首次内部发布,直到 Oracle 收购 Sun Microsystems,才发布了 3.19 版到 5.1 版。

5.1 版本

MySQL 5.1 版本于 2008 年 11 月 27 日正式发布,添加了诸如事件调度程序、分区、插件 API、基于行的复制、服务器日志表等额外功能。

但是,5.1 版本包含 20 个已知的错误,导致结果错误,加上 5.0 版本的 35 个错误。然而,截至 5.1.51 版本,几乎所有错误都已修复。此外,MySQL 5.1 和 6.0(处于 alpha 测试阶段)在数据仓库方面表现不佳,这部分可能是由于它无法利用多个 CPU 内核来处理单个查询。

5.5 版本

截至 2010 年 12 月,MySQL Server 5.5 是一个正式版。此版本改进的功能包括:

  • 默认存储引擎为 InnoDB,具有改进的 I/O 子系统,支持事务和参照完整性约束。

  • 改进的 SMP 支持

  • 半同步复制。

  • 添加了 SIGNAL 和 RESIGNAL 语句,符合 SQL 标准。

  • 支持补充 Unicode 字符集 utf16、utf32 和 utf8mb4。

  • 用户定义分区的新选项。

5.6 版本

MySQL 5.6 正式版于 2013 年 2 月发布。此版本的新功能包括:

  • 查询优化器具有更高效的性能。

  • InnoDB 中更高的交易吞吐量。

  • 新的 NoSQL 风格的 memcached API。

  • 改进分区以查询大型表。

  • 更好地管理超大型表。

  • 正确存储毫秒的 TIMESTAMP 列类型。

  • 复制改进。

  • 通过扩展 PERFORMANCE_SCHEMA 中提供的数据来改进性能监控。

  • InnoDB 存储引擎还提供对全文搜索的支持并改进了组提交性能。

5.7 版本

MySQL 5.7 于 2015 年 10 月正式发布。对于 MySQL 5.7 的次要版本,MySQL 5.7.8 及更高版本在 2015 年 8 月支持由 RFC 7159 定义的原生 JSON 数据类型。

8.0 版本

MySQL Server 8.0 于 2018 年 4 月发布,具有新的改进功能。目前,MySQL 8.0 的次要版本从 8.0.0 到 8.0.34。之前的 MySQL Server 8.0.0-dmr(作为开发里程碑版本)于 2016 年 9 月 12 日发布。

MySQL 8.0 中新增的功能

MySQL 的最新版本是 8.0。以下是一些新增的功能:

  • 数据字典 - 在之前的 MySQL 版本中,字典数据存储在元数据文件和非事务表中。MySQL 现在包含一个事务性数据字典,用于存储有关数据库对象的信息。

  • 原子数据定义语言 (Atomic DDL) 语句 - 原子 DDL 语句将与 DDL 操作相关的数据字典更新、存储引擎操作和二进制日志写入组合到单个原子事务中。

  • 升级过程 - 以前,在安装新版本的 MySQL 后,MySQL 服务器会在下次启动时自动升级数据字典表,之后 DBA 需要手动调用 mysql_upgrade 来升级 mysql 模式中的系统表以及其他模式(例如“sys”模式和用户模式)中的对象。

    从 MySQL 8.0.16 开始,服务器还会执行以前由 mysql_upgrade 处理的任务。此外,服务器还会更新帮助表的内容。新的 --upgrade 服务器选项可以控制服务器如何执行自动数据字典和服务器升级操作。

  • 会话重用 − MySQL 服务器现在默认支持 SSL 会话重用,并带有超时设置来控制服务器维护会话缓存的时间长度,该缓存确定客户端允许请求会话重用以建立新连接的期间。所有 MySQL 客户端程序都支持会话重用。此外,C 应用程序现在可以使用 C API 功能来启用加密连接的会话重用。

  • 安全和帐户管理 − 安全性得到极大提升,并增强了 DBA 在帐户管理方面的灵活性。

  • 资源管理 − MySQL 现在支持创建和管理资源组,并允许将服务器内运行的线程分配到特定组,以便线程根据组可用的资源执行。

  • 表加密管理 − 现在可以通过定义和强制执行加密默认值来全局管理表加密。

  • InnoDB 增强 − 添加了一些 InnoDB 增强功能,例如自动递增计数器值、索引树损坏、memcached 插件、InnoDB_deadlock_detect、表空间加密功能、存储引擎、InnoDB_dedicated_server、在临时表空间中创建临时表、zlib 库等。

  • 字符集支持 − 默认字符集已从 latin1 更改为 utf8mb4。utf8mb4 字符集具有几个新的排序规则,包括 utf8mb4_ja_0900_as_cs,这是 MySQL 中首个可用于 Unicode 的日语特定排序规则。

  • JSON 增强 − 对 MySQL 的 JSON 功能进行了一些增强和添加。

  • 数据类型支持 − MySQL 现在支持在数据类型规范中使用表达式作为默认值。这包括将表达式用作 BLOB、TEXT、GEOMETRY 和 JSON 数据类型的默认值,这些数据类型以前根本无法分配默认值。

  • 优化器 − 优化器也以多种方式得到了增强。

  • 改进的哈希连接性能 − MySQL 8.0.23 重新实现了用于哈希连接的哈希表,从而在哈希连接性能方面取得了几项改进。

  • 公用表表达式 − MySQL 现在支持公用表表达式,包括非递归和递归表达式。

  • 窗口函数 − MySQL 现在支持窗口函数,这些函数针对查询中的每一行执行计算,使用与该行相关的行。

  • 横向派生表 − 派生表现在可以在前面加上 LATERAL 关键字,以指定它允许引用(依赖于)同一 FROM 子句中前面表的列。

  • 单表 DELETE 语句中的别名 − 在 MySQL 8.0.16 及更高版本中,单表 DELETE 语句支持使用表别名。

  • 正则表达式支持 − 此前,MySQL 使用 Henry Spencer 正则表达式库来支持正则表达式运算符。

  • 内部临时表 − TempTable 存储引擎取代 MEMORY 存储引擎成为内存中内部临时表的默认引擎。

  • 日志记录 − 新版本中的日志记录过程也得到了改进。

除了所有这些之外,新版本的 MySQL 还添加了许多其他功能。

MySQL 8.0 中弃用的功能

以下是 MySQL 8.0 中弃用的一些功能,这些功能可能会在未来的系列中删除。应用程序可以使用提到的几种替代方法。

  • utf8mb3 字符集已弃用。请改用 utf8mb4。

  • ucs2、macroman 和 macce、dec、hp8 也已弃用。您应该改用 utf8mb4。

  • 用户定义的排序规则已弃用。

  • sha256_password 已弃用。

  • validate_password 的插件形式仍然可用,但已弃用。

  • ALTER TABLESPACE 和 DROP TABLESPACE 语句的 ENGINE 子句已弃用。

  • PAD_CHAR_TO_FULL_LENGTH SQL 模式已弃用。

  • 对于 FLOAT 和 DOUBLE 类型(以及任何同义词)的列,AUTO_INCREMENT 支持已弃用。

  • FLOAT、DOUBLE 和 DECIMAL 类型(以及任何同义词)的列的 UNSIGNED 属性已弃用。

  • FLOAT(M,D) 和 DOUBLE(M,D) 语法已弃用。

  • 数值数据类型的 ZEROFILL 属性和整数数据类型的显示宽度属性已弃用。

  • BINARY 属性已弃用。但是,使用 BINARY 指定数据类型或字符集保持不变。

  • ASCII 和 UNICODE 已弃用(MySQL 8.0.28 及更高版本)。在这两种情况下,都使用 CHARACTER SET 代替。

广告