MySQL 8.0.31于10月11日正式发布,让我们快速浏览一下这一版本有哪些改进内容。
审计插件:审计插件的日志轮换函数audit_log_rotate(),简化了日志轮换的工作,用户无需手动更改日志名称,也无需设置audit_log_flush = ON。
组件服务:启用了新的组件服务,支持服务器组件和要在本地服务器中查询的插件。新的MySQL命令服务类似于C API函数libmysql。
OCI密钥存储组件:component_keyring_oci替代之前用于OCI的Keyring插件,用以支持在Oracle Cloud上进行密钥存储。
优化器改进:优化器的内部管理操作进行了一组改进,包括如下:
带括号的查询表达式可以使用UNION进行嵌套,例如,
代码语言:javascript复制(
(SELECT a, b, c FROM t ORDER BY a LIMIT 3) ORDER BY b LIMIT 2
) ORDER BY c LIMIT 1;
当使用多组括号时,仍遵循现有的语义标准,更高的外部限制不能覆盖括号内部较低的限制,例如,
代码语言:javascript复制(SELECT ... LIMIT 3) LIMIT 5
最多返回三行数据。
UNION DISTINCT 和 UNION ALL 可以进行任意嵌套。
SQL语法:SQL不再支持使用full和FULL为对象命名,如果继续使用full或FULL作为表、视图、字段、存储过程等名称,将会被警告。SQL支持使用 INTERSECT 和 EXCEPT。
查询重写插件优化:MySQL 支持查询重写插件,这些插件可以在服务器执行之前检查并可能修改服务器接收到的 SQL 语句,之前,无论用户权限如何所有的查询都需要重写,甚至包括执行的内部系统查询。在这一版本加入了新的权限SKIP_QUERY_REWRITE,通过新的系统变量rewriter_enabled_for_threads_without_privilege_checks进行控制是否忽略对某些线程执行的语句进行改写。
OpenSSL:在内置OpenSSL的平台上,MySQL使用的OpenSSL库升级至1.1.1q。
监视缓冲池调整容量:InnoDB提供了两个新的状态变量Innodb_buffer_pool_resize_status_code和Innodb_buffer_pool_resize_status_progress用以监视缓冲池在线调整的过程。
并行创建索引:InnoDB现在支持并行索引构建,改进索引构建性能。
复制过滤优化:复制开启过滤时,副本不再引发复制错误相关的权限检查和require_row_format验证,副本将在全部的复制过滤应用后进行检查。
监视资源组:增加了状态变量Resource_group_supported,用以监视服务器是否支持资源组。
二进制包优化:二进制包中包含了curl,不再链接系统的curl库
资源争用优化:新的系统变量thread_pool_transaction_delay,允许在工作线程执行新的事务前指定延迟,适用于由于资源争用引发的并行事务对其他操作带来的性能影响。
调整查询线程数量:新的系统变量thread_pool_query_threads_per_group,使得用户可以增加线程组内的查询线程数量。
新的线程池插件:MySQL Database Service中使用的线程池插件,在MySQL企业版中提供。
以上内容是8.0.31的一个快速浏览,更为详细的功能改进和错误修复,请访问官网手册。