MySQL 9.7:innodb_log_writer_threads 默认值改为按 log_bin 和逻辑 CPU 数判断
参考文档:MySQL 9.7 New Features(nutshell)
innodb_log_writer_threads 默认值逻辑
innodb_log_writer_threads 的默认值不再是一个固定值,而是部分取决于服务器上是否启用了 binlog:
if (log_bin = OFF) {
if ([number of logical CPUs] <= 4) {
innodb_log_writer_threads = OFF
} else {
innodb_log_writer_threads = ON
}
} else {
/* Same as in MySQL 9.4 and earlier: */
if ([number of logical CPUs] < 32) {
innodb_log_writer_threads = OFF
} else {
innodb_log_writer_threads = ON
}
}
换成文字描述:
- 启用 binlog(
log_bin = ON)且可用逻辑 CPU 数 ≥ 32:默认ON; - 关闭 binlog 且可用 CPU 数 > 4:默认
ON; - 其余情况:默认
OFF。
这里改的是默认值,不影响已经显式配置过的值——如果这个变量被设置过,仍然按设置值生效。相关参数说明见手册第 10.5.4 节 “Optimizing InnoDB Redo Logging”。
受影响的情况
- 低核数机器:binlog 关闭时,逻辑 CPU ≤ 4 的实例默认
OFF,即不再起独立的 redo log 写入线程。 - 开着 binlog 的实例:判断逻辑与 MySQL 9.4 及更早版本一致(以 32 核为界),这部分行为不变。
- 从 9.4/9.6 升级:没显式设置
innodb_log_writer_threads的实例,升级后默认值可能变化;设置过的实例不受影响。
binlog_transaction_dependency_history_size 默认值上调
MySQL 9.5.0 起,binlog_transaction_dependency_history_size 的默认值从 25000 提高到 1000000(一百万),同时最大值从 1000000 提高到 10000000(一千万)。
该变更不影响变量当前已设置的值,因此对现有部署没有影响。
MySQL 9.7 中弃用的功能
SASL LDAP 认证的 SCRAM-SHA-1 认证方式自 MySQL 9.5.0 起弃用,改用 SCRAM-SHA-256;后者现在也是 authentication_ldap_sasl_auth_method_name 的默认值。
MySQL 9.7 中移除的功能
被移除的系统变量和状态变量包括:
group_replication_allow_local_lower_version_joinreplica_parallel_type
9.7 的其它变化
- cpuset cgroup 感知:MySQL Server 会遵循
cpuset-cpuscgroup controller 的限制,正确判断可用的逻辑 CPU 数量。 replica_allow_higher_version_source:新增变量,用于启用或禁用从更高版本的源端复制到更低版本的副本。- Hypergraph Optimizer 进入 Community Edition:
SET GLOBAL optimizer_switch='hypergraph_optimizer=on|off'。 - Community Edition 支持 JSON Duality Views 上的 DML。
caching_sha2_password的 PBKDF2 存储格式。