innodb_flush_method
WARNING
Rule IDs: io_003
Overview
- Purpose
- Documented in the MySQL 8.4 manual as a server system variable (scope: Global). Purpose and semantics are described at the linked manual page.
- Dynamic (MySQL 8.4 reference)
- MySQL 8.4 marks this variable as not dynamic (
Dynamic= No). It must be set inmy.cnfor on the command line; changing it requires a restart. - Default value
- O_DIRECT (Linux) (MySQL 8.4)
- Version and product notes
- MariaDB and Percona Server may use different names, defaults, or dynamic behavior; verify their documentation.
- Documentation
- https://dev.mysql.com/doc/refman/8.4/en/innodb-parameters.html#sysvar_innodb_flush_method
- Other vendors
What is checked
Rules that reference this variable, with their severity and what each rule detects:
- WARNING
io_003: Set innodb_flush_method=O_DIRECT on Linux with file_per_table=ON to bypass OS file system cache and avoid double buffering.
Tuning guidance
- Recommended actions:
- Set innodb_flush_method=O_DIRECT on Linux with file_per_table=ON to bypass OS file system cache and avoid double buffering.
- Trade-offs: Higher I/O capacity values push more writes to disk, reducing lag and crash recovery time, but can saturate storage on spinning disks. Match settings to your storage hardware (SSD vs HDD).
Example
-- In my.cnf (requires restart):
innodb_flush_method = O_DIRECT
Always validate on a non-production instance first. Use SET PERSIST (MySQL 8.0+) for changes that should survive restarts.