MySQL最新版本8.0.20正式发布。与之前8.0的系列版本一样,这次的发行版除了包含缺陷修复,也同样包括新功能。下面快速浏览一下。
关键字:hash join、InnoDB双写缓冲、二进制日志事务压缩。
-
增加了SHOW_ROUTINE 权限。使用该权限允许账户在最小权限下备份存储程序。
-
改进hash join。现在可以使用hash join代替BNL,hash join现在支持半连接、反连接、外连接。
-
加入新的索引级别的优化器提示。包括:JOIN_INDEX 、NO_JOIN_INDEX 、GROUP_INDEX 、NO_GROUP_INDEX 、ORDER_INDEX 、NO_ORDER_INDEX 、INDEX 及 NO_INDEX 。新的索引级别的优化器提示可以搭配SELECT , UPDATE 和 DELETE 语句使用,而以往的无法和DELETE 一起使用。
-
Performance Schema改良。为了减少错误检测的内存开销,Performance Schema放弃了在全局范围收集会话相关的错误统计信息。此外,针对每个线程,帐户,用户或主机报告的错误摘要中不再包含全局的错误信息。
-
SQL语法改良。以前,语句的INTO 子句 SELECT 可能出现在以下两个位置之一:
SELECT * INTO OUTFILE 'file_name' FROM table_name;
SELECT * FROM table_name INTO OUTFILE 'file_name' FOR UPDATE;
现在,INTO 可以出现在SELECT 的最后:
SELECT * FROM table_name FOR UPDATE INTO OUTFILE 'file_name';
此外,还针对进行 UNION 的 INTO 进行了一些更改,下面的语句结果相同:
... UNION SELECT * FROM table_name INTO OUTFILE 'file_name';
... UNION (SELECT * FROM table_name) INTO OUTFILE 'file_name';
... UNION SELECT * INTO OUTFILE 'file_name' FROM table_name;
... UNION (SELECT * INTO OUTFILE 'file_name' FROM table_name);
-
X Plugin改良。在启动中创建管理会话,以供达到客户端连接限制时获取服务器配置。初始化后立即可以访问MySQL系统变量等缺陷修复。
-
BLOB类型排序改变。改变了以往的非完整排序,服务器将BLOB类型转换为打包的插件进行排序,经测试,性能得到显著提升。
-
InnoDB改良。双写缓冲区的存储从系表空间移至双写文件。将双写缓冲区存储区移出系统表空间可减少写延迟,增加吞吐量并在双写缓冲区页的放置方面提供灵活性。
-
二进制日志事务压缩。从MySQL 8.0.20开始,您可以在MySQL服务器实例上启用二进制日志事务压缩。启用二进制日志事务压缩后,将使用zstd算法压缩事务有效负载,然后将其作为单个事件(Transaction_payload_event )写入服务器的二进制日志文件 。压缩后的事务有效负载在复制流中发送到从服务器,其他群组复制组成员或客户端(例如mysqlbinlog)时,保持压缩状态 。它们不会被接收器线程解压缩,并且仍以其压缩状态写入中继日志。因此,二进制日志事务压缩既可以节省事务的始发者,也可以节省接收者(及其备份)的存储空间,并在服务器实例之间发送事务时节省网络带宽。
-
CHANGE MASTER TO 语句的新选项REQUIRE_TABLE_PRIMARY_KEY_CHECK 使复制的从服务器可以选择自己的策略来进行主键检查。
-
MySQL 8.0.19开始,通过X协议连接发送的消息已支持压缩。MySQL
8.0.19开始,通过X协议连接发送的消息已支持压缩。在MySQL
8.0.19中,X协议对每种算法使用库默认压缩级别,客户端无法协商该默认压缩级别。从MySQL
8.0.20开始,客户端可以在协商期间为X协议连接请求特定的压缩级别。
上面内容为MySQL8.0.20的新功能快速一览,可以访问MySQL的在线手册获取完整的最新信息
https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-20.html
稿源:https://mp.weixin.qq.com/s/XCm0RHqcot9EoMvdKjsvpw |