+7 495 008 8452 пн.-пт. 10:00 – 17:00
Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.


MySQL, InnoDB, Монитор производительности

Приветствую.
Хочу поделится радостью: удалось оптимизировать работу MySQL.

В БУС монитор производительности на мощном сервере показывал следуюшее:
База данных MySQL (запись)      72      5 600      количество запросов на запись в секунду
База данных MySQL (чтение)      5 869   7 800      количество запросов на чтение в секунду
База данных MySQL (изменение)   4 251   5 800      количество запросов на изменение в секунду


Чего я только с настройками мускуля не крутил, ничего сильно ощутимого результата не давало.

Но нашлась все-таки одна настроечка, которая ну очень сильно меня обрадовала: innodb_flush_log_at_trx_commit=2
После того как я ее прописал, получил следующие циферки:
База данных MySQL (запись)     4 395     5 600     количество запросов на запись в секунду
База данных MySQL (чтение)    6 220    7 800    количество запросов на чтение в секунду
База данных MySQL (изменение)    4 643    5 800    количество запросов на изменение в секунду


Увелечение скорости записи в 60 раз меня ну очень обрадовало.

innodb_flush_log_at_trx_commit - Вам кажется, что InnoDB в сто раз медленнее MyISAM? Вероятно, вы забыли изменить значение этого параметра. Значение по умолчанию 1 означает, что после каждой завершенной транзакции (или после изменения состояния транзакции) лог должен быть сброшен на диск. Это достаточно дорогая операция, особенно если у вас нет Battery backed up cache. Многие приложения, особенно те, в которых раньше использовался MyISAM будут хорошо работать при значении 2, который означает, что не надо сбрасывать буфер на диск, а следует отправить его в кэш операционной системы. Лог по-прежнему будет сбрасываться на диск каждую секунду и максимум, что вы можете потерять - это 1-2 секунды записей. Значение 0 обеспечивает более высокую скорость, но и более низкую надежность. Есть вероятность потерять транзакции даже при падении mysql-сервера. При значении равном 2 единственная возможность потерять данные - это фатальный сбой операционной системы.

Ссылки по теме
http://www.mysqlperformanceblog.com/ англ
http://habrahabr.ru/blogs/mysql/49929/ перевод

Благодарность
  • Огромное спасибо Петру Невенчанному за помощь в ковыряниях настроек.
  • Монитору производительности (P.S.: Сергей Рыжиков, да он помогает диагностировать проблемы (это я к Вашему выступлению на highload).
  • Теме на форуме http://dev.1c-bitrix.ru/community/for...opic21767/

Немного передохнем и продолжим оптимизировать. Надеюсь тема не баян, и будет полезна.
Обновление
Руководство по настройке и установке уже рекомендует ставить innodb_flush_log_at_trx_commit=0

Назад в раздел

Подписаться на новые материалы раздела:












CAPTCHA