Mysql длина индекса таблицы не уменьшается после удаления их - PullRequest
1 голос
/ 16 января 2020

Я создал несколько индексов для таблицы, в которой есть записи по 1M, а index_length был увеличен, а затем удалил созданные мной индексы, но index_length не уменьшается обратно. Используя приведенный ниже запрос, чтобы увидеть подробности

SELECT  TABLE_NAME, table_rows, data_length, index_length,
        round(((data_length + index_length) / 1024 / 1024), 2) "Size in MB"
    FROM  information_schema.TABLES
    WHERE  table_schema = "dbname"
    ORDER BY  (data_length + index_length) DESC;

Любые материалы по этому вопросу очень ценятся. ТИА

1 Ответ

2 голосов
/ 16 января 2020

В общем MySQL InnoDB не освобождает место на диске после удаления строк данных из таблицы. Он сохраняет пространство для его повторного использования позже.

OPTIMIZE TABLE реорганизует физическое хранилище данных таблицы и связанных данных индекса, чтобы уменьшить пространство хранения и повысить эффективность ввода-вывода при доступе к таблице. Точные изменения вносятся в каждую таблицу в зависимости от механизма хранения, используемого этой таблицей.

Смотрите MySQL Документация для получения дополнительной информации

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