Thank you for reading this post, don't forget to subscribe!
Настройка innodb_flush_method определяет метод сброса данных из памяти на диск. Выбор подходящего значения — это выбор между скоростью и надежностью.
Основные значения — это O_DIRECT и O_DSYNC.
O_DIRECT
Этот метод использует 4 операции записи на диск на каждый вызов. Все эти операции верифицируются, что обеспечивает дополнительную надежность записи на диск, однако замедляет выполнение.
Лучше использовать когда для БД не настроен бэкап, и нет возможности быстро переключиться на резервную копию.
O_DSYNC
Этот метод также использует 4 операции записи на диск на каждый вызов. Однако при этом, только две из этих операций будут верифицированы (скажем так — 2 операции выполняться последовательно, а еще 2 параллельно, но без гарантий). Это обеспечит более эффективную запись, что позволит увеличить пропускную способность записи MySQL.
Лучше использовать когда БД резервируется, и есть возможность быстро переключиться на копию.
В итоге
O_DSYNC будет работать быстрее, чем O_DIRECT, но не так надежно. Настройка указывается в my.cnf:
1 |
innodb_flush_method = O_DSYNC |