innodb_flush_method и значения O_DSYNC / O_DIRECT

Настройка innodb_flush_method определяет метод сброса данных из памяти на диск. Выбор подходящего значения — это выбор между скоростью и надежностью.

Основные значения — это O_DIRECT и O_DSYNC.

O_DIRECT

Этот метод использует 4 операции записи на диск на каждый вызов. Все эти операции верифицируются, что обеспечивает дополнительную надежность записи на диск, однако замедляет выполнение.

Лучше использовать когда для БД не настроен бэкап, и нет возможности быстро переключиться на резервную копию.

O_DSYNC

Этот метод также использует 4 операции записи на диск на каждый вызов. Однако при этом, только две из этих операций будут верифицированы (скажем так — 2 операции выполняться последовательно, а еще 2 параллельно, но без гарантий). Это обеспечит более эффективную запись, что позволит увеличить пропускную способность записи MySQL.

Лучше использовать когда БД резервируется, и есть возможность быстро переключиться на копию.

В итоге

O_DSYNC будет работать быстрее, чем O_DIRECT, но не так надежно. Настройка указывается в my.cnf:

innodb_flush_method = O_DSYNC

Подпишитесь на Хайлоад с помощью Google аккаунта
или закройте эту хрень