Снижение производительности в MySQL после обновления до 5.6.27
Наше приложение долгое время использовало MySql версии 4.0.24. Мы пытаемся перенести его на версию 5.6.27. Но при тестировании производительности на 5.6.27 даже простые операции выбора и обновления выполняются на 30-40% медленнее, когда мы проводим нагрузочное тестирование. Скорость процессора и ввода-вывода намного лучше, чем у старого сервера. Ядром хранения таблиц является MyIsam в обеих версиях. Есть только одно соединение с базой данных. Мы попробовали следующие варианты:
- Изменение механизма хранения на InnoDb - это резко снижает производительность (на 70% медленнее)
- Изменение размера журнала innodb и размера буфера - мало помогло
- Увеличение размера ключевого буфера с механизмом хранения MyIsam для таблиц. - Это не имеет значения
Мы попытались изменить другие параметры, такие как кэш запросов, tmp_table_size, heap_table_size. Но никто из них не имел никакого значения.
Пожалуйста, дайте мне знать, есть ли другой вариант, который мы можем попробовать?
2 ответа
После попытки нескольких вариантов, вот конфигурации, которые работали для нас. Могут быть и другие решения, но у нас это сработало.
Опция 1:
- Выключил схему производительности
- Добавлена пара параметров соединения jdbc: useConfigs=maxPerformance& keepTimeStats=false
Вариант 2:
Миграция в MariaDB. С точки зрения производительности это сработало очень хорошо. Это давало на 5% лучшую производительность по сравнению с mysql для нашей системы. Но мы не смогли воспользоваться этим вариантом по нетехническим причинам.
Спасибо за ваш вклад.
Некоторые вещи, на которые вы можете посмотреть, - имеют ли два сервера одинаковый объем ОЗУ или нет, поскольку старый сервер имеет больше ОЗУ и может кэшировать больше вещей в памяти.
Вы также можете посмотреть, как вы подключаетесь к серверу MySQL - по сети? Это скорость / качество сети отличается? Доступ к одному серверу осуществляется локально, а к другому - по сети.
Вы пытались настроить некоторые хорошие параметры, но в случае, если они отсутствуют, вы можете запустить mysql -e 'show variables'
на обоих серверах, а затем используйте такой инструмент, как Winmerge, чтобы сравнить значения двух и увидеть, что может отличаться, о чем вы могли и не подумать.