MySQL 版本
版本化是一个将唯一版本 名称或数字 分类为唯一软件程序集的过程,因为它是开发和发布的。用于表示软件或程序初始发布的常用版本名称是1.0版本。目前没有行业标准规定版本号应该如何格式化。因此,每个公司都有自己的方法为软件分配版本名称。当软件和程序引入新功能、修复错误、修补安全漏洞时,版本号会增加,表示这些改进。
与MySQL一起使用的最新版本号 v5.8 。它包含许多重要的改变,包括新增和删除的新功能、修复的错误和安全问题,等等。这个版本包含从MySQL 8.0到MySQL 8.0.21的发布历史。它可以从 2018年4月 获得,并于 2026年4月 结束支持。
当您要在系统中安装MySQL时,您必须选择要使用的版本和分发格式。您可以通过两种方式安装MySQL,第一种是 开发版本 ,第二种是 通用可用性 (GA)版本。开发版本提供最新的功能,不推荐在生产环境中使用。通用可用性(GA)版本,也称为生产或稳定版本,主要用于生产。因此,您必须选择最新的通用可用版本。
让我们看看MySQL 8.0版本中的新功能。
MySQL 8.0新增功能
MySQL 8.0版本中添加了以下功能:
数据字典: 它将事务数据字典合并到存储有关数据库对象的信息中。之前的版本将数据存储在元数据文件和非事务表中。
原子DDL语句: 它是一种原子数据定义语言语句,将存储引擎操作、数据字典更新和与DDL操作相关联的二进制日志合并为单个原子事务。
升级过程: 以前,新MySQL版本的安装会自动升级数据字典表,然后DBA需要手动调用mysql_upgrade命令来完成升级过程。从MySQL 8.0.16开始,不再依赖DBA调用mysql_upgrade命令来完成升级过程。
安全和帐户管理: 增加了一些增强功能,以提高安全性,并在帐户管理中提供更大的DBA灵活性。
资源管理: 现在,MySQL允许您创建和支持资源组,将线程分配给特定组,以便根据组可用的资源执行。组属性可以通过组中的线程控制其资源消耗。
表加密管理: 现在,全局管理表加密通过定义和强制加密默认值来进行。default_table_encryption变量或DEFAULT ENCRYPTION子句在创建模式和通用表空间时定义加密默认值。
InnoDB增强功能: 在自增计数器、索引树损坏、内存缓存插件、InnoDB_deadlock_detect、表空间加密功能、存储引擎、InnoDB_dedicated_server、zlib库等方面增加了InnoDB增强功能。
字符集支持: 默认字符集由latin1更改为utf8mb4。新的字符集有许多新的排序规则,包括utf8mb_ja_0900_as_cs。
JSON增强功能: MySQL的json功能引入了以下增强功能或添加:内联路径(->>)操作符,json聚合函数JSON_ARRAYAGG()和JSON_OBJECTAGG(),实用函数JSON_PRETTY(),JSON_STORAGE_SIZE()(, JSON_STORAGE_FREE()。在对json值进行排序时,现在每个值由排序键的可变长度部分表示,而不是固定的1K大小。它还添加了合并函数JSON_MERGE_PATCH以添加2个json对象和JSON_TABLE()函数。
数据类型支持: 在数据类型规范中,可以支持使用表达式作为默认值。
优化器增强: 此版本添加了优化器增强功能,如隐式索引、降序索引、支持创建功能索引。它可以在列和常量值之间的比较中使用常量折叠。
窗口函数: 此版本支持许多新的窗口函数,如RANK()、LAG()和NTILE()。
其他重要功能包括:
- 增强正则表达式支持。
- 重新编写错误日志以使用MySQL组件体系结构。
- 引入新的备份锁,允许在防止导致不一致状态的操作时执行DML操作。
- 增强连接管理。现在,可以为管理连接专门配置TCP/IP端口。它在压缩方面提供更多控制,以最大程度地减少发送到服务器的字节。
- 在以前的版本中,插件是用C或C++编写的。现在,它必须仅用C++语言编写。MySQL 8.0.17版本提供了克隆插件,允许从本地或远程服务器克隆InnoDB数据。克隆插件还支持复制。
- 在该版本中,为TIMESTAMP和DATETIME值提供时区支持。
- 此版本还添加了SQL标准的表值构造函数和显式表子句。
MySQL 8.0中弃用的功能
MySQL 8.0版本已弃用许多功能,并可能在未来版本中删除。以下是一些功能的说明:
- 字符集 utf8mb3 已被弃用。
- sha256_password 已被弃用并将在将来的版本中移除。现在,默认的身份验证将会使用 caching_sha2_password。
- validate_password 插件将会很快被弃用并在将来的版本中移除。
- ALTER TABLESPACE 和 DROP TABLESPACE 的 ENGINE 子句将会被弃用。
- FLOAT 和 DOUBLE 列类型的 AUTO_INCREMENT 和 UNSIGNED 属性已被弃用。
- 现在,它使用 JSON_MERGE_PRESERVE() 函数来替代 JSON_MERGE()。
- SQL_CALC_FOUND_ROWS 修饰符、FOUND_ROWS() 函数、–no–dd–upgrade 服务器选项、mysql_upgrade 客户端和 mysql_upgrade_info 也已被弃用。
- 现在已经弃用了使用 MYSQL_PWD 环境变量来指定 MYSQL 密码的方法。
MySQL 8.0 中删除的功能
可用的话,您的应用程序需要进行更新。
- InnoDB_locks_unsafe_for_binlog 系统变量已被移除,information_schema_stats 变量被 information_schema_stats_expiry 取代。
- 与帐户管理相关的一些功能已被移除,包括:用于创建用户的 GRANT 语句、PASSWORD() 函数、old_passwords 系统变量等。
- 与 InnoDB 系统表相关的代码已过时并从 MySQL 8.0 版本中移除。基于 InnoDB 系统表的 INFORMATION_SCHEMA 视图现在被内部系统视图取代,并更名为:
Old Name | New Name |
---|---|
INNODB_SYS_COLUMNS | INNODB_COLUMNS |
INNODB_SYS_DATAFILES | INNODB_DATAFILES |
INNODB_SYS_FIELDS | INNODB_FIELDS |
INNODB_SYS_FOREIGN | INNODB_FOREIGN |
INNODB_SYS_FOREIGN_COLS | INNODB_FOREIGN_COLS |
INNODB_SYS_INDEXES | INNODB_INDEXES |
INNODB_SYS_TABLES | INNODB_TABLES |
INNODB_SYS_TABLESPACES | INNODB_TABLESPACES |
INNODB_SYS_TABLESTATS | INNODB_TABLESTATS |
INNODB_SYS_VIRTUAL | INNODB_VIRTUAL |
- 这个版本还去除了一些查询缓存,如FLUSH QUERY CACHE、RESET QUERY CACHE语句和SQL_CACHE SELECT修饰符等。
- 由于.frm文件已经过时,所以移除了sync_frm系统变量。
- 移除了multi_range_count、log_warning以及sql_log_bin系统变量的全局范围。
- 一些与加密相关的项目如ENCODE()、DECODE()、ENCRYPT()等也被移除。
- 移除了mysql_install_db程序,并使用–initialize或–initialize_insecure选项代替。
让我们通过以下表格来了解之前版本的MySQL发布历史:
版本名称 | 发布日期 | 支持结束日期 | 描述 |
---|---|---|---|
MySQL 5.1 | 2008年11月14日 | 2013年12月 | 该版本包含了MySQL 5.0到MySQL 5.1.73版本的发布。要查阅MySQL的第一个版本,请点击 这里 。 |
MySQL 5.5 | 2010年12月3日 | 2018年12月 | 该版本包含了MySQL 5.5到MySQL 5.5.62版本的发布。 |
MySQL 5.6 | 2013年2月5日 | 2021年2月 | 该版本包含了MySQL 5.6到MySQL 5.5.45版本的发布。 |
MySQL 5.7 | 2015年10月21日 | 2023年10月 | 该版本包含了MySQL 5.7到MySQL 5.6.27版本的发布。 |
MySQL 8.0 | 2018年4月19日 | 2026年4月 | 该版本包含了MySQL 8.0到MySQL 8.0.21版本的发布。 |
注意:Sun Microsystems收购后,版本6已停止工作,现在使用MySQL Cluster产品版本7和8。