MySQL8.0-自动配置缓冲池和redo日志
2020-04-02 本文已影响0人
月饮沙
当MySQL实例运行在数据库专用服务器时,MySQL可以使用所有系统资源,在这种情况下,可以使用innodb_dedicated_server
选项自动配置InnoDB。
在MySQL实例和其他应用程序共用系统资源时,不建议使用该选项
启用innodb_dedicated_server
后,InnoDB会自动配置以下选项
innodb_buffer_pool_size
innodb_log_file_size
-
innodb_log_files_in_group
(MySQL8.0.14+) -
innodb_flush_method
如果在配置文件中指定以上选项,会优先使用指定的值并出现类似以下格式的警告,其他未指定的选项依然可以自动配置。
[Warning] [000000] InnoDB: Option innodb_dedicated_server is ignored for innodb_buffer_pool_size because innodb_buffer_pool_size=134217728 is specified explicitly.
每次启动数据库时,都会自动评估配置值并在必要的情况下更改自动配置值。
自动配置规则
innodb_buffer_pool_size
缓冲池大小根据内存大小进行自动配置
服务器内存 | 缓冲池大小 |
---|---|
< 1GB | 128MiB (默认值) |
1GB - 4GB | 服务器内存 * 0.5 |
> 4GB | 服务器内存 * 0.75 |
innodb_log_file_size
MySQL8.0.14+
在MySQL8.0.14及以后版本,日志文件大小根据缓冲池大小进行自动配置
缓冲池大小 | 日志文件大小 |
---|---|
< 8GB | 512MiB |
8GB - 128GB | 1024MiB |
> 128GB | 2048MiB |
MySQL8.0.14-
日志文件大小根据服务器内存进行自动配置
服务器内存 | 日志文件大小 |
---|---|
< 1GB | 48MiB (the default value) |
<= 4GB | 128MiB |
<= 8GB | 512MiB |
<= 16GB | 1024MiB |
> 16GB | 2048MiB |
innodb_log_files_in_group
日志文件数量与自动配置的缓冲池大小相关
缓冲池大小 | 日志文件数量 |
---|---|
< 8GB | ROUND(buffer pool size) |
8GB - 128GB | ROUND(buffer pool size * 0.75) |
>128GB | 64 |
innodb_flush_method
当启用innodb_dedicated_server
时,刷新方法设置为O_DIRECT_NO_FSYNC
。如果O_DIRECT_NO_FSYNC
不可用,使用innodb_flush_method
的默认设置(fsync
)