Назад | Перейти на главную страницу

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

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

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

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

Найдите соответствующий запрос, скажите, что это что-то вроде

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

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

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

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

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

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

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

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

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

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