当innodb_dedicated_server
启用,InnoDB
自动配置以下变量:
只考虑启用innodb_dedicated_server
如果MySQL实例驻留在一个专用服务器上,它可以使用所有可用的系统资源。例如,如果你在Docker容器或只运行MySQL的专用虚拟机中运行MySQL服务器,可以考虑启用。启用innodb_dedicated_server
如果MySQL实例与其他应用共享系统资源,则不建议使用。
下面的信息描述了如何自动配置每个变量。
缓冲池大小是根据服务器上检测到的内存量来配置的。
在MySQL 8.0.14中,日志文件大小是根据自动配置的缓冲池大小来配置的。
请注意在MySQL 8.0.14之前
innodb_log_file_size
变量根据服务器上检测到的内存数量自动配置,如下图所示:表15.10自动配置日志文件大小(MySQL 8.0.13及之前版本)
检测到服务器内存 日志文件大小 < 1 gb 48MiB(默认值) < = 4 gb 128年mib < = 8 gb 512年mib < = 16 gb 1024年mib > 16 gb 2048年mib
日志文件的数量是根据自动配置的缓冲池大小(以千兆字节为单位)配置的。自动配置
innodb_log_files_in_group
变量是在MySQL 8.0.14中添加的。
请注意最低
innodb_log_files_in_group
如果四舍五入的缓冲池大小值小于2GB,则强制设置为2。flush方法设置为
O_DIRECT_NO_FSYNC
当innodb_dedicated_server
启用。如果O_DIRECT_NO_FSYNC
设置不可用,默认值innodb_flush_method
设置使用。InnoDB
使用O_DIRECT
在刷新I/O时,但跳过fsync ()
每次写操作后的系统调用。警告在MySQL 8.0.14之前,这个设置不适合XFS和EXT4这样的文件系统,这些文件系统需要一个
fsync ()
系统调用来同步文件系统元数据更改。从MySQL 8.0.14开始,
fsync ()
在创建新文件、增加文件大小和关闭文件之后调用,以确保同步文件系统元数据更改。的fsync ()
每次写操作之后仍然跳过系统调用。如果重做日志文件和数据文件驻留在不同的存储设备上,并且在从非电池支持的设备缓存刷新数据文件之前发生意外退出,那么数据丢失是可能的。如果您使用或打算使用不同的存储设备来存储重做日志文件和数据文件,并且您的数据文件驻留在一个没有电池支持的缓存设备上,请使用
O_DIRECT
代替。
如果在选项文件或其他地方显式配置了自动配置的选项,则使用显式指定的设置,并将类似的启动警告打印到stderr
:
[Warning] [000000] InnoDB: Option innodb_dedicated_server is ignored for innodb_buffer_pool_size因为innodb_buffer_pool_size=134217728被显式指定。
一个选项的显式配置不会阻止其他选项的自动配置。
如果innodb_dedicated_server
启用,通过innodb_buffer_pool_size
在选项文件中显式配置,innodb_log_file_size
和innodb_log_files_in_group
仍然根据根据服务器上检测到的内存量计算的缓冲池大小值自动配置,即使该值不用于配置缓冲池的大小。
每次启动MySQL服务器时,自动配置的设置都会被评估和重新配置。