Удаление "ненужных" индексов

Главные вкладки

Аватар пользователя aldwin aldwin 26 августа 2015 в 9:07

Здравствуйте.

Решил проверить друпал инструментом percona-toolkit и выяснил, что в БД есть дублируемые индексы.

# entity_type is a left-prefix of PRIMARY
# Key definitions:
#   KEY `entity_type` (`entity_type`),
#   PRIMARY KEY (`entity_type`,`entity_id`,`revision_id`,`deleted`,`delta`,`language`)

Причём дубликаты были в каждой таблице поля и её ревизии. Общая статистика по дубликатам:

# Size Duplicate Indexes   8986949397
# Total Duplicate Indexes  219
# Total Indexes            1949

Стоит ли их удалять?
Как сильно увеличится скорость восстановления из бэкапа, если этих индексов не будет?

Комментарии

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 26 августа 2015 в 23:39

"aldwin" wrote:
Стоит ли их удалять?

Удаляй, мы не можем запретить.
Но я бы провёл бенчмарки на вашей версии мускуля, они такие затейники.
"aldwin" wrote:
Как сильно увеличится скорость восстановления из бэкапа, если этих индексов не будет?

скорость восстановления бекапов значительно увеличится, если делать
ALTER TABLE tablename DISABLE KEYS;
INSERT...INSERT...INSERT...INSERT...INSERT...
INSERT...INSERT...INSERT...INSERT...INSERT...
INSERT...INSERT...INSERT...INSERT...INSERT...
ALTER TABLE tablename ENABLE KEYS;

или
SET AUTOCOMMIT = 0;
SET FOREIGN_KEY_CHECKS = 0;
SET UNIQUE_CHECKS = 0;
в случае InnoDB

А не потратить n часов на поиск, удаление и оценку последствий удаления одного индекса