https://dev.mysql.com/doc/refman/8.0/en/optimize-table.html говорит:
Для таблиц InnoDB OPTIMIZE TABLE
сопоставляется с ALTER TABLE ... FORCE
, что перестраивает таблицу для обновления статистики индекса и освобождения неиспользуемого пространства в кластерном индексе,
Это приносит пользу в тех случаях, когда у вас слишком много фрагментации.Страницы будут заполняться более эффективно, индексы будут перестраиваться, а дисковое пространство, занимаемое таблицей, будет сокращаться, если вы используете innodb_file_per_table
(по умолчанию в последних версиях).
Это занимает время, в зависимости отна размер вашего стола.Он заблокирует стол, пока он работает.Это потребует дополнительного дискового пространства во время работы, так как создает копию таблицы.
Выполнение оптимизации таблицы в таблице InnoDB обычно не требуется делать часто, но только после большого количества операций вставки /обновлять / удалять в таблице таким образом, чтобы это могло привести к фрагментации.
ANALYZE TABLE
значительно меньше влияет на InnoDB.Это не требует создания копии таблицы.Это действие только для чтения, оно просто читает случайную выборку страниц из таблицы и использует ее для оценки количества строк, среднего размера строк и обновляет статистику об индексах, чтобы направлять оптимизатор запросов.Это безопасно для запуска в любое время, оно на мгновение заблокирует эту таблицу, но это не будет больше независимо от размера таблицы.