MySQL записывает, как часто он использует индексы? - PullRequest
1 голос
/ 15 января 2010

У меня есть таблица (InnoDB) с достаточным количеством индексов. Было бы здорово узнать, если один (или более) из них никогда не использовался. Меня не заботит столько места на диске, но скорость вставки иногда является проблемой.

Записывает ли MySQL какую-либо статистику о том, как часто он использовал каждый индекс при выполнении запросов?

Ответы [ 4 ]

0 голосов
/ 16 января 2010

Планы запросов не сильно различаются - включите (медленное) ведение журнала запросов с пороговым значением 0 секунд, затем напишите немного кода на выбранном вами языке, чтобы проанализировать файлы журнала и удалить все литералы затем выясните планы для любого запроса, выполненного более 'N' раз.

С

0 голосов
/ 16 января 2010

Существует способ для поиска неиспользуемых индексов с небольшим патчем для MySQL.

0 голосов
/ 16 января 2010

Я бы предложил включить профилирование и провести анализ узких мест.

set profiling=1;

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

Некоторые другие команды, на которые следует обратить внимание:

show profiles;

select sum(duration) from information_schema.profiling where query_id=<ID you want to look at>;

show profile for query <you want to look at>;

Наконец, если вы хотите увидеть неиспользуемые индексы и у вас есть включенные пользовательские статистические данные

SELECT DISTINCT s.TABLE_SCHEMA, s.TABLE_NAME, s.INDEX_NAME
FROM information_schema.statistics `s` LEFT JOIN information_schema.index_statistics INDXS
ON (s.TABLE_SCHEMA = INDXS.TABLE_SCHEMA AND
s.TABLE_NAME=INDXS.TABLE_NAME AND
s.INDEX_NAME=INDXS.INDEX_NAME)
WHERE INDXS.TABLE_SCHEMA IS NULL; 
0 голосов
/ 16 января 2010

AFAIK, он только записывает общее количество использований индекса.

SHOW STATUS; имеет столбец Select_scan.

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