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
MySQL Server 5.5 于 2010 年 12 月发布,是一个通用版本。此版本中的改进功能包括:-
默认存储引擎是 InnoDB,它改进了 I/O 子系统,支持事务和引用完整性约束。
改进了 SMP 支持
半同步复制。
根据 SQL 标准添加了 SIGNAL 和 RESIGNAL 语句。
支持补充 Unicode 字符集 utf16、utf32 和utf8mb4。
新增用户自定义分区选项。
5.6 版
MySQL 5.6 正式版于 2013 年 2 月发布。此版本的新功能包括:
查询优化器性能更高效。
InnoDB 事务吞吐量更高。
新的 NoSQL 风格 Memcached API。
改进了查询大型表的分区功能。
更好地管理大型表。
TIMESTAMP 列类型可正确存储毫秒。
改进了复制功能。
通过 PERFORMANCE_SCHEMA 扩展可用数据,实现更好的性能监控。
InnoDB 存储引擎还支持全文搜索,并提升了组提交性能。
5.7 版
MySQL 5.7 于 10 月正式发布2015 年。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 增强功能,例如自动递增计数器值、索引树损坏、mem-cached 插件、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 类型(以及任何同义词)
FLOAT(M,D) 和 DOUBLE(M,D) 语法已弃用。
数值数据类型的 ZEROFILL 属性和整数数据类型的显示宽度属性已弃用。
BINARY 属性已弃用。但是,使用 BINARY 指定数据类型或字符集的方式保持不变。
ASCII 和 UNICODE 已弃用(MySQL 8.0.28 及更高版本)。在这两种情况下,请改用 CHARACTER SET。