Не робей перед врагом: лютейший враг человека — он сам (К. Прутков).

Как найти неиспользуемые индексы в базе данных MySQL?

2 мин для чтения
FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
17 апреля 2019
Как найти неиспользуемые индексы в базе данных MySQL?
Общее правило заключается в том, что чем больше у вас индексов в таблице, тем медленнее будут операции INSERT, UPDATE и DELETE.

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

Следовательно, добавление индексов не следует воспринимать легкомысленно, так как на самом деле это компромисс производительности, который должен быть правильно сбалансирован. Чем больше индексов вы добавите в набор столбцов/таблиц, тем медленнее будут операторы INSERT, UPDATE и DELETE. С другой стороны, поисковые операции будут оптимизированы с использованием этих индексов.

Эта статья не будет описывать методологии выбора правильных индексов, но подскажет, как найти и удалить избыточные индексы из вашей базы данных MySQL.

 

Как отследить избыточные индексы в MySQL?

Начиная с MySQL 5.6, база данных отслеживает использование индекса как часть своей PERFORMANCE SCHEMA. Эти данные могут быть запрошены с использованием представления  schema_unused_indexes, которое отображает индексы, для которых нет событий. Отсутствие событий означает, что эти индексы могут быть избыточными и некоторое время не использоваться.

Но жизнь не так хороша, по крайней мере, пока. Здесь потенциальным препятствием является то, что эта информация пересчитывается при каждом перезапуске MySQL. Поэтому, чтобы получить достоверную информацию, вы должны запросить эти представления через некоторое время после запуска экземпляра MySQL. Как долго после запуска вы спрашиваете? Ну, это зависит. Мой вопрос к вам будет – насколько занята ваша база данных? Знаете ли вы, все ли типы запросов обычно выполняются в базе данных за определенный период времени? Если это так, это ваше окно.

Итак, давайте посмотрим, как это делается:

select * from sys.schema_unused_indexes;

 

object_schemaobject_nameindex_name
mydbageagecountry_index
mydbcountryagecountry_index

2 ряда в наборе (0,01 с)

 

Как удалить избыточный индекс в MySQL?

Удаление неиспользуемого индекса так же просто, как выполнение этой команды:

DROP INDEX `index_name` on table

 

Выводы

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

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Просмотров: 93

Если статья понравилась, то поделитесь ей в социальных сетях:

Читайте также

    Добавить комментарий

    Войти с помощью: 

    Ваш e-mail не будет опубликован. Обязательные поля помечены *

    Сообщить об опечатке

    Текст, который будет отправлен нашим редакторам:

    Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

    badge
    Обратный звонок 1
    Отправить
    galka

    Спасибо! Ваша заявка принята

    close
    galka

    Спасибо! Ваша заявка принята

    close