Как распознать, какие индексы не используются? - PullRequest
0 голосов
/ 25 мая 2010

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

Ответы [ 4 ]

3 голосов
/ 25 мая 2010

Вы можете попытаться определить , какие индексы используются вообще.

Однако, что касается списка по полезности, извините, нет встроенного способа сделать это, и я не думаю, что Query Analyzer даже делает это.

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

Есть сообщение об ошибке , запрашивающее эту функцию .

1 голос
/ 03 июня 2010

Вам следует проверить исправления Percona или их сборки на сервере. Они добавили таблицы в INFORMATION_SCHEMA, чтобы вы могли найти неиспользуемые индексы.

Ссылки:

0 голосов
/ 25 мая 2010

Включите ведение журнала общих запросов в производстве. Да, я знаю, что это боль, и я знаю, что это повлияет на ваш рабочий сервер, но BITE THE BULLET. Это будет полезно позже. Оставьте его включенным на неопределенное время, если это возможно (конечно, убедитесь, что ротация, сжатие и срок действия журнала работают, и определенно следите за использованием дискового пространства; сообщите Ops, как отключить его, если случится что-то плохое)

Затем вы можете начать играть с такими инструментами, как mk-query-digest, которые будут запускать EXPLAIN для всех ваших запросов (конечно, делайте это с непроизводственной базой данных, но используйте недавний дамп вашей производственной базы данных).

Это позволит вам определить, какие индексы используются и как часто. По крайней мере, если EXPLAIN не врет, и ваш тестовый сервер использует тот же план, что и производственный.

Или, по крайней мере, в основном так и будет. EXPLAIN пока не сообщает вам, как работают запросы DELETE, UPDATE.

0 голосов
/ 25 мая 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...