Назад | Перейти на главную страницу

Накладные расходы InnoDb?

Я только что преобразовал несколько больших таблиц из MyISAM в InnoDB.

Когда я просматриваю таблицы в phpMyAdmin, они показывают значительные накладные расходы (одна таблица имеет 6,8 ГБ).

Оптимизация таблиц (которая не поддерживается в InnoDB) не оказывает такого влияния, как на MyISAM.

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

Есть ли способ очистить это?

Редактировать: Вот что я пробовал (безуспешно):

  1. Оптимизировать таблицу
  2. Изменить порядок таблицы по первичному ключу
  3. Таблица дефрагментации

Самый распространенный способ уменьшить файлы данных InnoDB - это сделать полную резервную копию с помощью mysqldump и восстановить ее. К сожалению, неиспользуемое табличное пространство не может быть напрямую возвращено в ОС, как это возможно с MyISAM или в MS SQL, из-за конструкции общего табличного пространства InnoDB.

Люди из InnoDB всегда горячо заявляли, что это было преднамеренное дизайнерское решение, но если это так, то это было довольно недальновидно. Я полностью понимаю идею отказа от автоматического сжатия файлов данных, но отсутствие ручной настройки довольно раздражает.

Обратите внимание, что вы можете настроить InnoDB на использование одного файла на табличное пространство. Если вы сделаете это, вы сможете ОПТИМИЗИРОВАТЬ таблицы по отдельности, чтобы сжать файлы, так как каждая из них будет иметь отдельный файл табличного пространства.