[昌哥IT课堂]MySQL8.0 中的自动调整配置参数

2025-12-11_172530

介绍

MySQL 提供了许多配置变量,用于修改其行为并启用某些功能。能够提供最佳可靠性和性能的配置不仅取决于工作负载类型,还取决于服务器可用的系统资源。这使得在将 MySQL 服务器部署到生产环境时确定理想配置变得极具挑战性。因此,我们决定将默认配置设置为生产就绪。

与 MySQL 8.0 相比,MySQL 8.4 对内置配置的默认值进行了更改。这些配置参数的默认值旨在自动适应运行 MySQL 服务器的机器。所有功能均未移除,升级到 8.4 后,您可以继续使用 8.0 版本中您偏好的值。只需在 8.4 配置文件中设置相应的值即可覆盖默认配置。这些更改适用于 MySQL 8.4 社区版、企业版和 HeatWave。

技术概述

现在,您只需设置这两个变量,其余变量使用内置默认值,即可使用默认配置将 MySQL 服务器迁移到生产环境:

[mysqld]

  max_connections = N

  innodb_dedicated_server = ON

 

max_connections控制服务器可同时连接的最大客户端数量。其默认值为 151,最大值为 100000。

innodb_dedicated_server告诉 InnoDB 服务器运行在专用机器上。这使得 InnoDB 能够针对给定系统确定其关键配置的最佳值。它使 InnoDB 可以按如下方式扩展innodb_buffer_pool_sizeinnodb_redo_log_capacity :

innodb_buffer_pool_size是根据可用物理内存(例如M)确定的,计算公式为:

如果M < 1 GB,则为 128 MB

如果1 GB ≤ M ≤ 4 GB,则M * 0.50 GB

如果M > 4 GB ,则M * 0.75 GB

innodb_redo_log_capacity 的值根据逻辑 CPU 的数量(例如N)确定,计算公式为 ( N /2) GB,上限为 16 GB。

默认情况下, `innodb_dedicated_server`处于禁用状态。这样做是为了保持 MySQL 的下载便捷性。您可以在笔记本电脑上下载并启动 MySQL,而无需担心 MySQL 占用过多系统资源。 在 MySQL 8.0 和 MySQL 8.4 中, `innodb_buffer_pool_size`和`innodb_redo_log_capacity`的默认值分别为128 MB 和1 GB。

MySQL 8.4 的默认设置使其适用于任何机器,并可自动调整默认值,从而确保其在生产环境中稳定运行。服务器会根据逻辑 CPU 数量、总物理内存、操作系统以及其他相关配置(例如 innodb_buffer_pool_size和 innodb_buffer_pool_instances)的值来确定最佳配置值。这使得 MySQL 能够根据运行机器的类型进行调整和扩展。

此表总结了 MySQL 8.4 相对于 MySQL 8.0 的默认设置变更。您可以看到,MySQL 8.4 中某些功能默认处于禁用状态。这样做是为了确保用户安全,并不表示这些功能已被弃用。建议用户在启用这些功能之前了解其潜在的副作用。

撤销更改

这些更改仅影响默认值,因此您可以随时通过覆盖这些更改来撤销它们。以下是一个示例配置文件,其中包含 8.4 版本中更改的配置的 8.0 版本默认值。请务必手动编辑特定于您的操作系统和依赖配置的值:

[mysqld]

  innodb_adaptive_hash_index=ON

  innodb_buffer_pool_in_core_file=ON

  innodb_change_buffering=all

  innodb_io_capacity=200

  innodb_io_capacity_max=2000

  innodb_log_buffer_size=16777216

  innodb_numa_interleave=OFF

  innodb_page_cleaners=4

  innodb_parallel_read_threads=4

  innodb_purge_threads=4

  innodb_read_io_threads=4

  innodb_use_fdatasync=OFF

  temptable_max_mmap=1073741824

  temptable_max_ram=1073741824

  temptable_use_mmap=ON

 

  # When innodb_buffer_pool_size >= 1 GB

  innodb_buffer_pool_instances=8

 

  # When innodb_buffer_pool_size < 1 GB

  innodb_buffer_pool_instances=1

 

  # innodb_doublewrite_files was 2 * innodb_buffer_pool_instances.

  # By default, this is either 2 * 1 = 2; or 2 * 8 = 16.

  innodb_doublewrite_files=2

 

  # innodb_doublewrite_pages was innodb_write_io_threads. This is 4

  innodb_doublewrite_pages=4

 

  # Unix:

  innodb_flush_method=fsync

 

  # Windows:

  innodb_flush_method=unbuffered

结论:

MySQL 8.4 开箱即用,已针对生产环境进行了优化,这意味着它安全、高性能且稳定可靠。它配备了适用于生产环境的默认配置,可根据可用系统资源(例如逻辑 CPU 数量和物理内存)进行扩展。

您可以使用默认配置,启用innodb_dedicated_server并适当设置max_connections ,轻松地将 MySQL 服务器迁移到生产环境。

再次强调,没有任何内容被移除,升级到 8.4 后,您可以继续使用您偏好的 8.0 版本值。所有这些功能在 MySQL 8.4 社区版和企业版以及 HeatWave 中均可用。

感谢您使用 MySQL!

posted on 2025-12-11 17:41  昌哥IT课堂  阅读(3)  评论(0)    收藏  举报

导航