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