Ускоряем INSERT в 1С-Bitrix

Автор | 19.09.2014

После установки этого безобразия (1C-Bitrix) заметил, что медленно отрабатывает генерация страниц..
Копнув в лог заметил много таких вставок в БД

TIME: 0.0178248882 SESSION: blkqvjd37heib431532gddfip5  CONN: Resource id #49
INSERT INTO b_stat_hit.......

И каждая из них выполняется по 15-50мс
Погуглив нашел решение.

Нужно установить опцию сброса кеша на диск в MySQL

innodb_flush_log_at_trx_commit=2

Результаты после перезапуска:

TIME: 0.000164032 SESSION: 6cl2kntia51rttl1hoje7nbna4  CONN: Resource id #49
INSERT INTO b_stat_hit

17,8мс против 0,164мс…. нехилое ускорение.

Описание:
innodb_flush_log_at_trx_commit – Значение по умолчанию 1 означает, что после каждой завершенной транзакции (или после изменения состояния транзакции) лог должен быть сброшен на диск. Это достаточно дорогая операция, особенно если у вас нет Battery backed up cache. Многие приложения, особенно те, в которых раньше использовался MyISAM будут хорошо работать при значении 2, который означает, что не надо сбрасывать буфер на диск, а следует отправить его в кэш операционной системы. Лог по-прежнему будет сбрасываться на диск каждую секунду и максимум, что вы можете потерять – это 1-2 секунды записей. Значение 0 обеспечивает более высокую скорость, но и более низкую надежность. Есть вероятность потерять транзакции даже при падении mysql-сервера. При значении равном 2 единственная возможность потерять данные – это фатальный сбой операционной системы.
http://dev.1c-bitrix.ru/community/webdev/user/23706/blog/1472/

Залишити відповідь