У меня странная разница в производительности между серверами MariaDB и MySQL
У меня 2 сервера:
1 ° На первом я использую стандартный пакет MariaDB (10.1.26-0 + deb9u1), распространяемый с Debian 9.1 2 ° На втором я запускаю стандартный пакет MySQL (mysql-community-server-5.6. 26-2.el7.x86_64) распространяется с CentOS 7.1.1503
У обоих одинаковое оборудование и одинаковая рабочая нагрузка (на самом деле ничего). На обоих я импортировал базу данных объемом 1,5 ГБ с третьего сервера (по дампу таблицы используют InnoDB).
По основным запросам производительность идентична. К сожалению, в более сложных запросах (с несколькими объединениями, использующими правильно проиндексированные таблицы) у меня есть огромная разница.
Например, по запросу: MariaDB 1,293 секунды <> 0,389 секунды MySQL
На MariaDB
Я пробовал использовать настройки по умолчанию на обоих серверах ... MySQL всегда давал лучшие результаты.
Я также пытался настроить некоторые настройки кеша на MariaDB ... но MySQL с настройками по умолчанию остается лучше
В этом запросе я видел, что используемые индексы отличаются
Тип индекса MySQL: "index_merge" <> тип индекса MariaDB "диапазон" и только ОДИН индекс используется в MariaDB
Я уверен, что это просто вопрос отсутствующей настройки ... но я не знаю, где искать.
Я ищу советы или идеи для исследования. Кто-нибудь может мне помочь?
Наилучшие пожелания
Тибо
Я наконец обнаружил, что моя проблема связана с различием в методе оптимизации. Это описано в https://mariadb.com/kb/en/library/fair-choice-between-range-and-index_merge-optimizations/
При проблемных запросах можно использовать 2 индекса, но механизм оптимизации выбрал только один.
Сначала я улучшил производительность, удалив используемый индекс (чтобы принудительно использовать другой индекс). Затем я создал новый индекс с комбинацией необходимых полей