Вопрос взят из:Ууху. Call.com/question/42…, ответ - личное творение
На самом деле этоinnodb_flush_log_at_trx_commit
иsync_binlog
Две настройки параметра, обе установлены на 1,Двойная установка 1. Конфигурация MySQL по умолчаниюДвойная 1 конфигурация.
innodb_flush_log_at_trx_commit
даinnodb
конфигурация двигателя,sync_binlog
Это конфигурация верхнего уровня механизма MySQL, который управляет стратегией записи на диск.
MySQL innoDB
двигатель в делеcommit
после:
- бинлог запись в память
- журнал повторов запись в память
- Определите, очищаются ли два журнала в соответствии с этими двумя конфигурациями (вызов
fsync
) - фиксация завершена
innodb_flush_log_at_trx_commit
: стратегия очистки журнала повторов, по умолчанию 1.
- если
innodb_flush_log_at_trx_commit
Установите на 0:log buffer
будет писать раз в секундуlog file
в иlog file
изflush
(Операции очистки на диск) выполняются одновременно. В этом режиме, когда транзакция зафиксирована,Активно не запускает запись на дископерация; - если
innodb_flush_log_at_trx_commit
Установите в 1: каждая транзакция фиксируетсяMySQL
положитlog buffer
запись данныхlog file
,иflush
(кисть к диску); - если
innodb_flush_log_at_trx_commit
Установите на 2: каждая транзакция фиксируетсяMySQL
будет записывать данные буфера журналаlog file
,ноflush
Операции (сброс на диск) не выполняются одновременно. В этом режиме MySQL будетвыполнять каждую секундуflush
(сброс на диск).
sync_binlog
: стратегия сброса binlog, по умолчанию 0
- Если он равен 0, подобно механизму операционной системы для сброса других файлов, MySQL не будет синхронизироваться с диском, а будет полагаться на операционную систему для сброса.
binary log
. -
sync_binlog = N (N>0)
, MySQL вПишите каждые N раздвоичный журналbinary log
, буду использоватьfdatasync()
функция для записи в двоичный журналbinary log
Синхронизировать с диском.