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 增强功能:在自动增量计数器、索引树损坏、memcached 插件、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 密码的 MYSQL_PWD 环境变量。
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 视图现在被内部系统视图替换并重命名为:
旧名称 | 新名称 |
---|---|
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 系统变量已被删除。
- 已删除 sql_log_bin 系统变量的 multi_range_count、log_warning 和全局范围。
- 一些与加密相关的项如 ENCODE()、DECODE()、ENCRYPT() 等也已删除。
- 它删除了 mysql_install_db 程序被删除,如果它使用 --initialize 或 --initialize_insecure 选项代替。
让我们通过下表了解 MySQL 之前版本的发布历史:
版本名称 | 发布日期 | 结束更新日期 | 描述 |
---|---|---|---|
MySQL 5.1 | 14-11-2008 | 2013年12月 | 此版本包含 MySQL 5.0 到 MySQL 5.1.73 版本的发布。 |
MySQL 5.5 | 03-12-2010 | 2018 年 12 月 | 此版本包含 MySQL 5.5 到 MySQL 5.5.62 版本的发布。 |
MySQL 5.6 | 05-02-2013 | 2021 年 2 月 | 此版本包含 MySQL 5.6 到 MySQL 5.5.45 版本的发布。 |
MySQL 5.7 | 21-10-2015 | 2023 年 10 月 | 此版本包含 MySQL 5.7 到 MySQL 5.6.27 版本的发布。 |
MySQL 8.0 | 19-04-2018 | 2026 年 4 月 | 此版本包含 MySQL 8.0 到 MySQL 8.0.21 版本的发布。 |
注意:版本 6 在被 Sun Microsystems 收购后已经停止工作,现在它使用 MySQL Cluster 产品版本 7 和 8。
热门文章
优秀文章