Добавлен индекс в мою базу данных MySQL, теперь запросы блокируются

Я просто добавил еще один индекс в таблицу в моей базе данных, но теперь сайт падает, запросы блокируются и не разблокируются, а запросы не выполняются (я вижу их в списке процессов, и они обычно выполняются менее чем за секунду, но сейчас они около 600 секунд и более и т. д.).

Я ничего не изменил на своем сайте, просто добавил индекс. Как это возможно, у кого-нибудь были похожие проблемы, прежде чем это могло бы помочь мне решить мою проблему?

Обновление: я не совсем уверен, что произошло, но один конкретный запрос был очень медленным после добавления индекса (хотя этот индекс не был необходим / использован для этого конкретного запроса). Даже удаление индекса не помогло снова ускорить запрос. После этого я удалил все индексы из этой таблицы и снова добавил индексы один за другим, после чего запрос снова был быстрым. Не уверен, поможет ли это кому-нибудь, но это исправило это для меня.

2 ответа

Решение

Найдите запрос, скажем, что-то вроде

select * from tableName where user='bob' order by ts;

Затем добавьте EXPLAIN спереди

EXPLAIN select * from tableName where user='bob' order by ts;

Оттуда вы можете увидеть, используется ли индекс, сколько таблиц он должен сканировать и сколько он возвращает. Я предполагаю, что это... У вас был индекс, который он использовал раньше, и теперь вы создали этот новый индекс, который хуже, и он каким-то образом использует этот индекс.

Вы не предоставили никаких сведений о схеме базы данных, добавленном вами индексе, используемом ядре базы данных, выполняемых запросах, влияет ли изменение производительности на все запросы / запросы с использованием нового индекса / запросов с использованием измененной таблицы / some только запросы. Так что это довольно сложно сказать.

Единственными причинами добавления индекса являются:

1) ускорить процесс

2) навязать уникальное ограничение

(опять же, вы не сказали, для чего предназначен ваш индекс).

Поскольку очевидно, что он не смог ускорить процесс, вам следует сбросить индекс и посмотреть, возобновится ли нормальный сервис, но, возможно, вы захотите посмотреть, как вы собираете и анализируете свою статистику, прежде чем сделать это.

Другие вопросы по тегам