Оптимизатор основывает свои действия частично на «статистике». Эти статистические данные поступают из явного ANALYZE TABLE
или из определенных изменений в таблице, таких как «добавление более 10% в таблицу».
Нет ничего для синхронизации статистики между двумя Мастерами, поэтому они могутрасходиться. Даже запуск ANALYZE TABLE
на обоих не обязательно приведет к их синхронизации. Это происходит из-за «случайных проб», которые вносятся в таблицу для составления статистики.
FORCE INDEX
рискованно, потому что «то, что помогает сегодня, может повредить завтра».
Возможно, эточто происходит: у вас есть запрос, который находится на границе между выбором одного плана запроса и другого. Анализ Оптимизатора говорит, что они примерно эквивалентны, но (по разным причинам) это не так. Это может привести к тому, что один сервер будет выполнять одно (быстрый план запросов), а другой - что-то другое (плохой план запросов).
Не существует «надежного» и «согласованного» способа решения вашей проблемы.
Давайте попробуем заняться этим по-другому. Укажите запрос, EXPLAIN
и SHOW CREATE TABLE
. может быть лучшим индексом и / или переформулировкой запроса, которая полностью устраняет проблему и, возможно, выполняется быстрее, чем любой из ваших текущих планов запросов.