|
I do not think we can allow innodb_flush_method to be changed to any allowed value while the server is running. Most values, yes, but not all of them. Let us review how this was refactored in MDEV-30136:
| innodb_flush_method |
innodb_data_file_buffering |
innodb_data_file_write_through |
| fsync, littlesync, nosync, normal¹ |
ON |
OFF |
| O_DSYNC |
OFF |
ON |
| O_DIRECT, O_DIRECT_NO_FSYNC, unbuffered¹, async_unbuffered¹ |
- |
- |
⁰ innodb_log_file_buffering was added in MDEV-28766 (MariaDB Server 10.8.4).
¹ The options normal, unbuffered, async_unbuffered are available on Microsoft Windows only.
The two columns of parameters related to log writes have been omitted, because would depend on the file format change MDEV-14425 and are therefore not applicable to MariaDB Server 10.6.
Because we do not want to change the meaning of some values in a GA release, I believe that we must disallow SET_GLOBAL innodb_flush_method=…; to or from the values:
- littlesync
- nosync
- O_DIRECT_NO_FSYNC
In MDEV-30136 the meanings of these parameters were revised (together with deprecating the parameter innodb_flush_method). That was acceptable in a new major release but not within a GA release.
The revised table of allowed dynamic values of innodb_flush_method and their impact on the persistent InnoDB data files would be as follows:
| innodb_flush_method |
O_DIRECT |
O_DSYNC |
| fsync, normal¹ |
OFF |
OFF |
| O_DSYNC |
ON |
ON |
| O_DIRECT, unbuffered¹, async_unbuffered¹ |
ON |
OFF |
¹ The options normal, unbuffered, async_unbuffered are available on Microsoft Windows only.
|