Как изменить innodb_flush_method в MySQL

innodb_flush_method определяет метод сохранения данных из оперативной памяти на диск.

Приведу пример просмотра текущего значения:

show variables like 'innodb_flush_method';

У меня отобразилось пустое значение, что по умолчанию означает fsync (для Linux):

+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| innodb_flush_method |       |
+---------------------+-------+
1 row in set (0.01 sec)

Возможные значения для Windows: unbuffered (по умолчанию) и normal.
Возможные значения для Linux: fsync или 0 (по умолчанию), O_DSYNC, littlesync (тестовый), nosync, O_DIRECT, O_DIRECT_NO_FSYNC.

Для изменения значения, укажем в файле конфигурации MySQL сервера:

[mysqld]
innodb_flush_method=O_DIRECT

Перезапустим MySQL сервер чтобы применить изменения:

service mysql restart

Проверим текущее значение:

show variables like 'innodb_flush_method';
+---------------------+----------+
| Variable_name       | Value    |
+---------------------+----------+
| innodb_flush_method | O_DIRECT |
+---------------------+----------+

Метод O_DIRECT является надежным и в тоже время может снизить производительность, так как система будет пытаться избежать кэширования чтения/записи. Он полезен когда рейд адаптер, не имеет батарейки или когда часто пропадает электричество и сервер внезапно отключается, также необходимо учесть что должно быть достаточно производительности IOPS дисковой системы, если не достаточно, то можно выбрать например менее надежный метод O_DSYNC.

Смотрите другие мои статьи на тему MySQL

Оставьте комментарий

Добавить комментарий