MySQL-8021-GA重点解读

5次阅读

共计 4053 个字符,预计需要花费 11 分钟才能阅读完成。

本文起源:翻译 管长龙
* 爱可生开源社区出品,原创内容未经受权不得随便应用,转载请分割小编并注明起源。


MySQL 8.0.21 GA!重点解读

MySQL 8.0.21 版本已于昨日公布(dev.mysql.com),开始对一些术语如 Master / Slave 等做了替换。上面是来自官网团队对此版本的重点性能解读。

更具体的内容请参考:
https://dev.mysql.com/doc/rel…

InnoDB

增加全局禁用 redo log 性能的配置项(WL#13795)

反对动静启停 redo log,可使数据库写入速度更快,服务也更容易解体并失落整个实例数据。


ALTER INSTANCE ENABLE|DISABLE INNODB REDO_LOG;

次要实用在加载初始数据时,首先禁用 redo log,加载数据,再次开启。

表空间文件名验证变为可选项(WL#14008)

通过参数 –innodb-validate-tablespace-paths (ON|OFF) 可决定是否开启表空间文件名验证性能。在 HDD 零碎中扫描表空间开销很大,在咱们晓得用户不会频繁挪动文件的状况下,能够通过跳过验证缩小启动工夫。即便该参数设置为 OFF,仍然能够应用 ALTER TABLESPACE 语法。

锁零碎的优化(WL#10314)

以往用单个闩锁爱护爱护所有队列的拜访,扩展性很差,队列治理成为瓶颈,因而引入更细化的闩锁办法。将每个表和每一行都能够视为资源,并且事务能够申请对资源的拜访权限。锁零碎将 GRANTED 和 WAITING 的申请都存在一个队列中。为了容许队列并发操作,提供了一种平安疾速锁定队列的形式。

将所有的 InnoDB 表空间限定为已知的目录 (WL#13065)

将表空间文件的地位限定在已知目录(datadir, innodb_data_home_dir, innodb_directories, and innodb_undo_directory)。目标是限度能够在任何地位创立文件从而导致复原过程出现意外的状况。

Undo DDL 反对 ACID (WL#11819)

改良 Undo 表空间性能和安全性,可对 Undo 表空间主动截断。对 Undo 表空间的 CREATE / TRUNCATE 操作都被记录到 redo log。长处是防止了之前解决方案在 Undo 截断过程中须要两个检查点,这些检查点可能阻塞零碎。此批改还修复了几个影响到 Undo 的命令:CREATE、DROP 和 TRUNCATE。

JSON

增加 JSON_VALUE 函数(WL#12228)

目标是简化 JSON 值的索引创立,能够从给定的 JSON 值中获取指定地位的值,并作为指定类型返回。

SELECT JSON_VALUE('{"name":"Evgen"}', '$.name')

以 VARCHAR(512) 返回的无引号字符串 Evgen,并带有 JSON 的默认排序规定。

SELECT JSON_VALUE('{"price": 123.45}', '$.price' RETURNING DECIMAL(5,2))

以 DECIMAL(5,2) 返回 123.45。

SQL DDL

CREATE TABLE…AS SELECT 语句成为原子语句(WL#13355)

以往此举作为两个不同的事务执行(CREATE TABLE 和 SELECT INTO)进行解决,后果在某些状况下,曾经提交 CREATE TABLE 但回滚了 SELECT INTO。目前解决了此问题并顺便修复了(Bug#47899)。

优化器

引入了新的优化器参数以禁用限度优化(WL#13929)

prefer_ordering_index 默认开启,新的开关管制优化,存在限度子句时从非排序索引切换到分组根据和排序根据的排序索引。

半联接和单表 UPDATE / DELETE (WL#6057)

以往单表的疾速查问绕过了优化器并间接执行,从而使得这些语句无奈从更高级的优化(半联接)中受害。

// 以往以下两句用不到 semijoin,较慢
UPDATE t1 SET x=y WHERE z IN (SELECT * FROM t2); 
DELETE FROM t1 WHERE z IN (SELECT * FROM t2); 

// 以下语句能够用到,较快
SELECT x FROM t1 WHERE z IN (SELECT * FROM t2);

优化后,以上 SQL 语句像其它查问一样通过优化器和执行器。不再须要在 UPDATE / DELETE 语句中增加无关表(多表 UPDATE / DELETE 能够应用 semijoin)。此外可在语句上执行 EXPLAIN FORMAT = TREE 和 EXLPAIN ANALYZE。目前解决了此问题并顺便修复了 (Bug#96423) 和(Bug##35794)。

组复制

升高缓存参数的最小值(WL#13979)

group_replication_message_cache_size 从 1 GB 升高到 128 MB。这使 DBA 能够缩小 XCom 缓存的大小,以便 InnoDB Cluster 能够胜利地部署在具备大量内存(例如 16GB)和良好网络连接的主机上。

指定能够通过哪些端点复原流量(WL#13767)

用于指定在分布式复原期间用于组复制的 IP 和端口。目标是管制网络基础架构中流量的复原,例如:出于稳定性或安全性起因。

以 C++ 编译 XCom (WL#13842)

因为 C++ 的高级性能和更丰盛的规范库,减速将来的倒退。

将重要的 GP 日志音讯分类为零碎音讯(WL#13769)

将某些组复制日志音讯从新分类为零碎音讯。始终记录零碎音讯,而与服务器日志级别无关。目标是确保 DBA 能够察看组中的次要事件。

开启组复制语句以反对凭据作为参数(WL#13768)

扩大 START GROUP_REPLICATION 命令,以将 USER,PASSWORD,DEFAULT_AUTH 和 PLUGIN_DIR 承受为复原通道的可选参数。目标是防止将凭据存储在文件中,这在某些环境中可能是平安问题。

组成员尝试主动复原参数默认值批改(WL#13706)

group_replication_autorejoin_tries 默认值从 0 减少到 3。当该值为 0 时,组复制网络分区超过 5 秒钟会导致成员退出该组而不返回。导致须要执行手动操作以将成员带回。指标是提供“主动网络分区解决”,包含从网络分区中复原,最无效的办法是将 group_replication_autorejoin_tries 设置大于 0。

组成员期待参数默认值批改(WL#13773)

group_replication_member_expel_timeout 从 0 减少到 5。以升高速度较慢的网络上或呈现刹时网络故障时不必要的驱赶和次要故障转移的可能性。默认值的新值示意该成员将在无法访问后 10 秒钟被驱赶:在狐疑成员已来到组之前花了 5 秒钟期待,而后在驱赶该成员之前又期待了 5 秒钟。

反对二进制日志校验和(WL#9038)

反对组复制中二进制日志校验和。在进行此更改之前,组复制插件要求禁用 binlog-checksum,当初勾销了此限度。Binlog 校验和的目标是通过主动计算和验证二进制日志事件的校验和来确保数据完整性。

X 插件

–mysqlx-bind-address 反对多值(WL#12715)

容许用户应用多个 IP 地址(接口)配置 X Plugin 绑定地址,用户能够在其中跳过主机的不须要的接口。MySQL 8.0.13(WL#11652)中引入了对多个地址的绑定。

路由器

用户可配置的日志文件名(WL#13838)

可将日志写入 mysqlrouter.log 以外的文件名,并将控制台音讯重定向到 stdout 而不是 stderr。

反对从应用程序中暗藏节点(WL#13787)

减少了对每个实例元数据属性的反对,该属性批示给定实例是暗藏的,不利用作指标候选对象。MySQL Router 反对在 InnoDB Cluster 的各个节点之间散布连贯。通常将负载调配给所有节点是一个很好的默认设置,并且能够预期,然而用户可能有理由将一个节点排除在接管负载之外。例如:用户可能心愿从应用程序流量中排除给定的服务器实例,以便能够在不中断传入流量的状况下对其进行保护。

其它

创立 / 更改用户减少 JSON 形容(WL#13562)

元数据以 JSON 对象的构造增加到 mysql.user 表的 user_attributes 列中。JSON 对象容许用户还将其用户帐户元数据存储到该列中,例如:

ALTER USER foo ATTRIBUTE '{"free_text":"This is a free form text"}'; 
// 将存储为 metadata
 {"metadata": {"free_text": "This is a free form text"}}. 

用户元数据在用户的信息架构表中公开。

为管理员连贯端口反对独自的 TLS 证书集(WL#13850)

为用户端口和管理员端口应用不同的 TLS 证书。MySQL 反对用于治理连贯的专用端口。以前,管理员连贯端口和惯例客户端 - 服务器连贯端口都共享同一组 TLS 证书。在托管的托管环境中,这带来了挑战,因为:

  1. 客户可能心愿携带本人的证书
  2. 外部和内部证书的证书轮换策略可能不同。

当初,咱们为治理连贯端口引入了一套独自的 TLS 证书以及其余相干的配置和状态参数,并对来自这两个不同端口的连贯应用了独自的 SSL 上下文。

异步客户端的压缩协定(WL#13510)

8.0.16 中增加了对异步客户端的反对。8.0.18 增加了对同步客户端协定压缩的反对。最初一步确保异步客户端也反对协定压缩。目标是缩小跨数据中心的网络流量。这项工作基于 Facebook 的奉献(BUG#88567)。

平安的客户端库 LOAD DATA LOCAL INFILE 门路 / 目录(WL#13168)

客户端配置将指定容许和不容许的内容。而后,当服务器申请文件时,客户端将查看规格并承受或拒绝请求。

弃用

在分区函数中弃用对前缀键的反对(WL#13588)

如果表在 PARTITION BY KEY 子句中蕴含具备前缀键索引的列,则产生弃用正告。未来,该语法将给出谬误音讯。

感谢您应用 MySQL!

正文完
 0