Mysql 简明教程

MySQL - Versions

版本被引入到任何产品中,通过添加额外的功能和删除不必要的功能、修复错误等来进行升级。版本化的过程实际上对于使产品随着技术的发展而变得更有效率非常重要。

每当安装 MySQL 时,我们必须选择与发行格式一起安装的版本。MySQL 最新版本是 8.0 ,其次要版本是 8.0.34 。要安装 MySQL 服务器,有两种方法:开发版本和通用可用版本。

开发版本包含所有最新功能,但建议不要在生产中使用。通用可用版本更像是可以在生产中稳定使用的生产版本。

MySQL Versions

MySQL 是一个快速、易于使用的 RDBMS,被许多小企业和大企业使用。它由瑞典公司 MySQL AB 开发、销售和支持。MySQL 最初于 1995 年 5 月 23 日内部发布,直到 Oracle 收购 Sun Microsystems,从 3.19 版到 5.1 版均已发布。

Version 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 内核来处理单个查询。

Version 5.5

MySQL Server 5.5 于 2010 年 12 月成为通用可用版本。此版本中改进的功能包括−

  1. 默认存储引擎是采用改进的 I/O 子系统的 InnoDB,它支持事务和引用完整性约束。

  2. Improved SMP support

  3. Semi-synchronous replication.

  4. 根据 SQL 标准添加了 SIGNAL 和 RESIGNAL 语句。

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

  6. 用户自定义分区的选项。

Version 5.6

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

  1. 查询优化器具有更高的效率。

  2. InnoDB 中的事务处理吞吐量更高。

  3. New NoSQL-style memcached APIs.

  4. 针对查询大数据表的改进的分区。

  5. 对非常大的数据库的管理能力更强。

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

  7. Improvements to replication.

  8. 通过拓展 PERFORMANCE_SCHEMA 中可用的数据的性能监控能力。

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

Version 5.7

MySQL 5.7 于 2015 年 10 月成为通用可用版本。在 MySQL 5.7 的次要版本,即 MySQL 5.7.8 及更高版本中,支持 2015 年 8 月由 RFC 7159 定义的本地 JSON 数据类型。

Version 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 日发布。

Features Added in MySQL 8.0

MySQL 的最新版本是 8.0。其中一些新增加的功能包括:

  1. Data dictionary − 在早前的 MySQL 版本中,字典数据存储在元数据文件和非事务表中。MySQL 现在集成了事务数据字典,用于存储有关数据库对象的信息。

  2. Atomic Data Definition Language(Atomic DDL) statements − 原子 DDL 语句将数据字典更新、存储引擎操作以及与 DDL 操作关联的二进制日志写入结合到单个原子事务中。

  3. Upgrade procedure − 以前,在安装 MySQL 新版本之后,MySQL 服务器会在下次启动自动升级数据字典表,DBA 之后需要手动调用 mysql_upgrade 来升级 mysql 架构中的系统表,以及其他架构(例如 sys 架构和用户架构)中的对象。从 MySQL 8.0.16 开始,服务器也会执行 mysql_upgrade 以前处理的任务。此外,服务器还会更新帮助表的目录。新的 --upgrade 服务器选项提供对服务器执行自动数据字典和服务器升级操作的方式的控制。

  4. Session Reuse - MySQL 服务器现在默认支持 SSL 会话重用,并提供超时设置来控制服务器维持会话缓存的时间,该缓存确定客户端被允许请求对新连接使用会话重用的时间段。所有 MySQL 客户端程序都支持会话重用。此外,C 应用程序现在可以使用 C API 功能为加密连接启用会话重用。

  5. Security and account management - 安全性得到了极大的改善,同时还实现了账户管理中更强大的 DBA 靈活度。

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

  7. Table encryption management − 现在可以通过定义和实施加密默认值来全局管理表加密。

  8. InnoDB enhancements − 添加了多项 InnoDB 增强功能,如自动增量计数器值、索引树损坏、内存缓存插件、InnoDB_deadlock_detect、表空间加密功能、存储引擎、InnoDB_dedicated_server、在临时表空间中创建临时表、zlib 库等。

  9. Character set support − 默认字符集已从 latin1 更改为 utf8mb4。utf8mb4 字符集有几个新校对规则,包括 utf8mb4_ja_0900_as_cs,这是 MySQL 中针对 Unicode 可用的第一个日语特定校对规则。

  10. JSON enhancements − 对 MySQL 的 JSON 功能进行了多项增强和添加。

  11. Data type support - MySQL 现在支持在数据类型规格中使用表达式作为默认值。其中包括将表达式用作以前根本无法分配默认值的 BLOB、TEXT、GEOMETRY 和 JSON 数据类型的默认值。

  12. Optimizer - 优化器也以多种方式得到增强。

  13. Improved hash join performance - MySQL 8.0.23 重新实现了用于散列联接的散列表,从而提高了散列联接性能。

  14. Common table expressions - MySQL 现在支持常用表表达式,包括非递归和递归表达式。

  15. Window functions - MySQL 现在支持窗口函数,这些窗口函数对来自查询的每一行使用与该行相关的行执行计算。

  16. Lateral derived tables - 现在可以在派生表之前加上 LATERAL 关键字,以指定允许引用(依赖于)同一 FROM 子句中前面各表的列。

  17. Aliases in single-table DELETE statements - 在 MySQL 8.0.16 及更高版本中,单表 DELETE 语句支持使用表别名。

  18. Regular expression support - 以前,MySQL 使用 Henry Spencer 正则表达式库来支持正则表达式运算符。

  19. Internal temporary tables - TempTable 存储引擎取代 MEMORY 存储引擎,成为内存内部临时表的默认引擎。

  20. Logging - 在新版本中,日志记录过程也得到了改进。

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

Features Deprecated in MySQL 8.0

以下是 MySQL 8.0 中已弃用的众多功能中的一些,未来可能删除这些功能。应用程序可以使用提到的多个备选方案。

  1. utf8mb3 字符集已弃用。请改用 utf8mb4。

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

  3. User-defined collations are deprecated.

  4. sha256_password is deprecated.

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

  6. ALTER TABLESPACE 和 DROP TABLESPACE 语句中的 ENGINE 子句已弃用。

  7. PAD_CHAR_TO_FULL_LENGTH SQL 模式已弃用。

  8. 对于类型为 FLOAT 和 DOUBLE(及任何同义词)的列,不再支持 AUTO_INCREMENT。

  9. 对于类型为 FLOAT、DOUBLE 和 DECIMAL(及任何同义词)的列,UNSIGNED 属性已弃用。

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

  11. 数字数据类型的 ZEROFILL 属性以及整数数据类型的显示宽度属性已弃用。

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

  13. ASCII 和 UNICODE 已弃用(MySQL 8.0.28 及更高版本)。在两种情况下,请改用 CHARACTER SET。