当 innodb_dedicated_server
启用时,InnoDB
会自动配置以下变量
-
注意
innodb_log_file_size
和innodb_log_files_in_group
已弃用,并由innodb_redo_log_capacity
取代。
仅当 MySQL 实例位于可使用所有可用系统资源的专用服务器上时,才考虑启用 innodb_dedicated_server
。例如,如果您在仅运行 MySQL 的 Docker 容器或专用 VM 中运行 MySQL 服务器,请考虑启用 innodb_dedicated_server
。如果 MySQL 实例与其他应用程序共享系统资源,则不建议启用 innodb_dedicated_server
。
以下信息描述了每个变量的自动配置方式。
缓冲池大小根据服务器上检测到的内存量进行配置。
表 17.8 自动配置的缓冲池大小
检测到的服务器内存 缓冲池大小 小于 1GB 128MB(默认值) 1GB 到 4GB 检测到的服务器内存
* 0.5大于 4GB 检测到的服务器内存
* 0.75重做日志容量根据服务器上可用的逻辑处理器数量进行配置。公式为(可用逻辑处理器数量 / 2)GB,最大动态默认值为 16 GB。
innodb_log_file_size
(已弃用)日志文件大小根据自动配置的缓冲池大小进行配置。
innodb_log_files_in_group
(已弃用)日志文件数量根据自动配置的缓冲池大小进行配置。
注意如果四舍五入后的缓冲池大小值小于 2GB,则强制执行
innodb_log_files_in_group
的最小值为 2。
如果在选项文件或其他地方显式配置了自动配置的选项,则使用显式指定的设置,并且会将类似于此的启动警告打印到 stderr
[Warning] [000000] InnoDB: 选项 innodb_dedicated_server 由于显式指定了 innodb_buffer_pool_size=134217728,因此被忽略。
显式配置一个选项不会阻止其他选项的自动配置。
如果启用了 innodb_dedicated_server
并且显式配置了 innodb_buffer_pool_size
,则根据服务器上检测到的内存量计算的缓冲池大小值,而不是显式定义的缓冲池大小值,将用于根据缓冲池大小配置的变量。
每次启动 MySQL 服务器时,都会评估自动配置的设置,并在必要时重新配置。