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

Аватар пользователя 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

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

0 Thanks

Комментарии

Аватар пользователя Виктор Степаньков ака 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 часов на поиск, удаление и оценку последствий удаления одного индекса