The Daily Side - Что такое настройка Double One для MySQL?

MySQL

Вопрос взят из:Ууху. 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после:

  1. бинлог запись в память
  2. журнал повторов запись в память
  3. Определите, очищаются ли два журнала в соответствии с этими двумя конфигурациями (вызовfsync)
  4. фиксация завершена

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 fileflush(кисть к диску);
  • если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Синхронизировать с диском.