Я понимаю, что после выполнения большого удаления в MySQL вам нужно выполнить NULL ALTER, чтобы восстановить диск пространство, верно ли это также для освобождения пространства индекса?
У нас есть таблицы, использующие> 10 ГБ пространства индекса, и мы удалили / заархивировали большие фрагменты этих данных и не уверены, нужно ли нам перестроить таблицу, чтобы уменьшить размер индекс.
Кто-нибудь может дать совет?
Мы стараемся не перестраивать таблицу, так как это займет некоторое время и заблокирует таблицу.
Спасибо!
Вы используете InnoDB. К сожалению, в конфигурации по умолчанию InnoDB никогда не возвращает дисковое пространство, если вы не используете innodb_file_per_table
, и в этом случае дисковое пространство можно повторно занять, запустив optimize table foo
.
Если вы не используете innodb_file_per_table
, то вам необходимо сделать следующее:
mysqldump
сбросить ваши базы данных в файл.Излишне говорить, что перед этим вам лучше убедиться, что у вас есть очень хорошая резервная копия. Также настоятельно рекомендуется включить innodb_file_per_table
пока у вас остановлен mysql.