新特性解读 | MySQL 8.0.18 预览

作者:管长龙 王均 田帅萌

前一阵圈内人士发布了一个关于新版本的消息:《MySQL 8.0.18 Hash Join 来啦!》

该文章概括介绍了 MySQL 8.0.18 将支持 Hash Join 和推出 EXPLAIN ANALYZE 等新功能。

国庆一过,全国各处秋高气爽,感觉到 8.0.18 的脚步也近了。除了上述的新功能之外,有关 8.0.18 的更新细节已经出现在 MySQL 官网文档上了,对此做了一些整理,让我们先预览一下吧!

一、Replication

1、新的主从复制信息记录方式

我们知道主从复制建立前,需要在 slave 通过 CHANGE MASTER TO 语句来设置 master 选项。若 slave 启动是添加 --master-info-file=file_name 参数,则开启记录 master 信息的日志文件,默认文件为 master.info 在 datadir 下。

8.0.18 版本开始将不推荐使用 --master-info-file--master-info-repository 选项。未来将使用 crash-safe slave 表来代替 master 信息文件记录的方式。

同理,relay_log_info_file 也将在 crash-safe slave 表中记录,固也不推荐使用。

2、对 row-based 日志的搜索模式优化

目前 --slave-rows-search-algorithms=list 的作用是在启动时控制选择如何在行中搜索匹配项。特备是是否使用 HASH_SCAN,未来将默认使用 INDEX_SCAN, HASH_SCAN 这两种方式,它们的性能是最佳的,并可以在所有情况下正常工作。

综上,从 8.0.18 版本后不推荐再设置此值,建议默认即可。

3、即将废弃的压缩协议选项

主从传输的压缩协议有两种开启方式:

3.1 --slave-compressed-protocol[={OFF|ON}] 服务启动选项。如果主从都支持压缩协议,则可开启主从压缩协议。

默认为禁用状态 uncompressed,具体压缩方式可以通过配置 my.cnf 决定。

[mysqld]
protocol_compression_algorithms=zlib,zstd,uncompressed

优先级从左到右依次尝试。

3.2 CHANGE MASTER TO 指定的 MASTER_COMPRESSION_ALGORITHMS 选项

参数同上,还可指定压缩等级

CHANGE MASTER TO
  MASTER_COMPRESSION_ALGORITHMS = 'zlib,zstd',
  MASTER_ZSTD_COMPRESSION_LEVEL = 7;

从 MySQL 8.0.18 开始,第一种方式开启后,优先生效,将决定主从压缩协议。通过第二种方式修改后重启也无法生效。

不推荐使用该选项。它将在将来的 MySQL 版本中删除。

4、压缩相关的连接选项

选项 描述 新增 不推荐
--compress, -C 压缩客户端和服务器之间发送的所有信息 8.0.18
--compression-algorithms=value 用于连接服务器的允许压缩算法 8.0.18
--zstd-compression-level=level 与使用zstd压缩的服务器的连接的压缩级别 8.0.18

二、System variables、Functions and Options

1、不再受 setting the session value 限制

  • default_collation_for_utf8mb4
  • collation_database
  • explicit_defaults_for_timestamp
  • rbr_exec_mode

2、init_file

如果指定,此变量将命名一个文件,该文件包含在启动过程中需要读取和执行的 SQL 语句。在 MySQL 8.0.18 之前,每个语句必须在一行上,并且不应包含注释。从 MySQL 8.0.18 开始,文件中语句的可接受格式已扩展为支持以下结构:

  • delimiter ;,将语句定界符设置为 ; 字符
  • delimiter $$ ,将语句定界符设置为 $$ 字符序列
  • 同一行上的多个语句,由当前定界符分隔
  • 多行语句
  • 从 # 字符到行尾的注释。
  • 从-- 序列到行尾的注释。
  • 从一个 /序列到以下/ 序列(包括多行)的 C 样式注释。
  • 用单引号(')或双引号(")字符括起来的多行字符串文字。
  • 同时如果服务器使用 --initialize 或 --initialize-insecure 选项启动 ,则它将以引导模式运行,并且某些功能不可用,该功能限制了文件中允许的语句。这些语句包括与帐户管理(例如 CREATE USER 或 GRANT),复制和全局事务标识符有关的语句。

3、max_prepared_stmt_count

8.0.18 后最大值从 1048576 改为 4194304

4、thread_pool_size

8.0.18 后最大值为 64,之后的版本(8.0.19)将调整为 512

5、新增

  • compression_algorithm:当前连接的压缩算法
  • compression_level:当前连接的压缩级别
  • group_replication_recovery_compression_algorithm:允许用于传出恢复连接的压缩算法
  • group_replication_recovery_zstd_compression_level:使用zstd压缩的恢复连接的压缩级别
  • innodb_idle_flush_pct:限制 InnoDB 空闲时的 I/O操作
  • protocol_compression_algorithms:允许传入连接的压缩算法
  • show_create_table_skip_secondary_engine:是否从 SHOW CREATE TABLE 输出中排除 SECONDARY ENGINE 子句
  • generated_random_password_length:参数作用于生成随机密码允许的最大字符数 CREATE USER, ALTER USER 和 SET PASSWORD 语句

6、不推荐

  • compression:客户端连接是否在客户端/服务器协议中使用压缩
  • log_bin_use_v1_row_events:服务器是否正在使用 v1 版本的二进制日志行事件
  • master-info-file:记住主文件的文件的位置和名称,以及 I/O 复制线程在主文件的二进制日志中的位置
  • relay_log_info_file:从站记录有关中继日志信息的文件
  • slave-rows-search-algorithms:确定用于从属更新批处理的搜索算法
  • slave_compressed_protocol:使用主/从协议压缩
  • slave_rows_search_algorithms:确定用于从属更新批处理的搜索算法

7、函数不推荐

  • WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS()

三、Source-Configuration Options

  1. 新增 --DADD_GDB_INDEX=bool

此选项确定是否启用二进制文件中 .gdb_index 段的生成 ,这将使它们更快地加载到调试器中。该选项默认为禁用。使用 lld 链接程序,并被禁用。如果使用 lld 或 GNU gold 以外的链接程序,则该链接无效 。

  1. 新增 --DWITH_ZSTD=zstd_type

使用该 zstd 算法的连接压缩,需要使用 zstd 库支持构建服务器。该 WITH_ZSTD 指示的源 zstd 支持:

  • bundled:使用 zstd 与发行版捆绑在一起的库。这是默认值。
  • system:使用系统 zstd 库。
  1. 删除 --DDISABLE_SHARED=bool

是否禁用构建构建共享库并编译与位置相关的代码。默认值为 OFF(编译与位置无关的代码)。

  1. 删除 --DWITH_RE2=re2_type

要包括的 RE2 库支持的类型。re2_type 可以是以下值之一:

  • bundled:使用与发行版捆绑在一起的 RE2 库。这是默认值。
  • system:使用系统RE2库。

从 MySQL 8.0.18 开始,MySQL 不再使用 E2 库。

你可能感兴趣的:(数据库,mysql)