Вопрос взят из:Ууху. 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Синхронизировать с диском.