When innodb_dedicated_server
is
enabled, InnoDB
automatically configures the
following variables:
innodb_log_files_in_group
(as of MySQL 8.0.14)
Only consider enabling
innodb_dedicated_server
if the
MySQL instance resides on a dedicated server where it can use all
available system resources. For example, consider enabling if you
run MySQL Server in a Docker container or dedicated VM. Enabling
innodb_dedicated_server
is not
recommended if the MySQL instance shares system resources with
other applications.
The information that follows describes how each variable is automatically configured.
Buffer pool size is configured according to the amount of memory detected on the server.
Table 15.9 Automatically Configured Buffer Pool Size
Detected Server Memory Buffer Pool Size Less than 1GB 128MiB (the default value) 1GB to 4GB detected server memory
* 0.5Greater than 4GB detected server memory
* 0.75As of MySQL 8.0.14, log file size is configured according to the automatically configured buffer pool size.
Table 15.10 Automatically Configured Log File Size
Buffer Pool Size Log File Size Less than 8GB 512MiB 8GB to 128GB 1024MiB Greater than 128GB 2048MiB
NotePrior to MySQL 8.0.14, the
innodb_log_file_size
variable was automatically configured according to the amount of memory detected on the server, as shown below:Table 15.11 Automatically Configured Log File Size (MySQL 8.0.13 and Earlier)
Detected Server Memory Log File Size < 1GB 48MiB (the default value) <= 4GB 128MiB <= 8GB 512MiB <= 16GB 1024MiB > 16GB 2048MiB
The number of log files is configured according to the automatically configured buffer pool size (in gigabytes). Automatic configuration of the
innodb_log_files_in_group
variable was added in MySQL 8.0.14.Table 15.12 Automatically Configured Number of Log Files
Buffer Pool Size Number of Log Files Less than 8GB ROUND( buffer pool size
)8GB to 128GB ROUND( buffer pool size
* 0.75)Greater than 128GB 64 The flush method is set to
O_DIRECT_NO_FSYNC
wheninnodb_dedicated_server
is enabled. If theO_DIRECT_NO_FSYNC
setting is not available, the defaultinnodb_flush_method
setting is used.InnoDB
usesO_DIRECT
during flushing I/O, but skips thefsync()
system call after each write operation.WarningPrior to MySQL 8.0.14, this setting is not suitable for file systems such as XFS and EXT4, which require an
fsync()
system call to synchronize file system metadata changes.As of MySQL 8.0.14,
fsync()
is called after creating a new file, after increasing file size, and after closing a file, to ensure that file system metadata changes are synchronized. Thefsync()
system call is still skipped after each write operation.On storage devices with cache, data loss is possible if data files and redo log files reside on different storage devices, and a crash occurs before data file writes are flushed from the device cache. If you use or intend to use different storage devices for redo logs and data files, use
O_DIRECT
instead.
If an automatically configured option is configured explicitly in
an option file or elsewhere, the explicitly specified setting is
used, and a startup warning similar to this is printed to
stderr
:
[Warning] [000000] InnoDB: Option innodb_dedicated_server is ignored for innodb_buffer_pool_size because innodb_buffer_pool_size=134217728 is specified explicitly.
Explicit configuration of one option does not prevent the
automatic configuration of other options. For example, if
innodb_dedicated_server
is
enabled and
innodb_buffer_pool_size
is
configured explicitly in an option file,
innodb_log_file_size
and
innodb_log_files_in_group
are
automatically configured based on the implicit buffer pool size
that is calculated according to the amount of memory detected on
the server.
Automatically configured settings are evaluated and reconfigured if necessary each time the MySQL server is started.