MySQL8.0有了一个新参数又叫自适应参数 innodb_dedicated_server
将innodb_dedicated_server开启的时候,它可以自动的调整下面这四个参数的值:
1. innodb_buffer_pool_size 总内存大小
2. innodb_log_file_size redo文件大小
3. innodb_log_files_in_group redo文件数量
4. innodb_flush_method 数据刷新方法
只需将innodb_dedicated_server = ON 设置好,上面四个参数会自动调整,解决非专业人员安装数据库后默认初始化数据库参数默认值偏低的问题,让MySQL自适应的调整上面四个参数,前提是服务器是专用来给MySQL数据库的,如果还有其他软件或者资源或者多实例MySQL使用,不建议开启该参数,本文以MySQL8.0.19为例。
那么按照什么规则调整呢?MySQL官方给出了相关参数调整规则如下:
1. innodb_buffer_pool_size自动调整规则:
专用服务器内存大小 | buffer_pool_size大小 |
小于1G | 128MB (MySQL缺省值) |
1G to 4G | OS内存*0.5 |
大于4G | OS内存*0.75 |
2. innodb_log_file_size自动调整规则:
buffer_pool_size大小 | log_file_size 大小 |
小于8G | 512MB |
8G to 128G | 1024MB |
大于128G | 2048MB |
3. innodb_log_files_in_group自动调整规则:
(innodb_log_files_in_group值就是log file的数量)
buffer_pool_size大小 | log file数量 |
小于8G | ROUND(buffer pool size) |
8G to 128G | ROUND(buffer pool size * 0.75) |
大于128G | 64 |
说明:如果ROUND(buffer pool size)值小于2GB,那么innodb_log_files_in_group会强制设置为2。
4. innodb_flush_method自动调整规则:
该参数调整规则直接引用官方文档的解释:The flush method is set to O_DIRECT_NO_FSYNC when innodb_dedicated_server is enabled. If the O_DIRECT_NO_FSYNC setting is not available, the default innodb_flush_method setting is used.
如果系统允许设置为O_DIRECT_NO_FSYNC;如果系统不允许,则设置为InnoDB默认的Flush method。
自适应参数的好处:
- 自动调整,简单方便,让DBA更省心
- 自带优化光环:没有该参数前,innodb_buffer_pool_size和log_file_size默认安装初始化后只有128M和48M,这对于一个生产环境来说是远远不够的,通常DBA都会手工根据服务器的硬件配置来调整优化,该参数出现后基本上可以解决入门人员安装MySQL后的性能问题。
- 云厂商,虚拟化等动态资源扩容或者缩容后,不必再操心MySQL参数配置问题。
自适应参数的限制:
- 专门给MySQL独立使用的服务器
- 单机多实例的情况不适用
- 服务器上还跑着其他软件或应用的情况不适用