Оптимизировать таблицу innodb
Когда я запускаю таблицу оптимизации таблицы innodb, я получаю это сообщение. означает ли это, что таблица уже оптимизирована, но по-другому?
"table | optimize | note | Таблица не поддерживает оптимизацию, вместо этого заново создавайте + анализировать"
Ответы
Ответ 1
В документации :
Для таблиц InnoDB таблица OPTIMIZE TABLE отображается в ALTER TABLE, которая перестраивает таблицу для обновления статистики индекса и свободного неиспользуемого пространства в кластерном индексе. Начиная с MySQL 5.1.27, это отображается в выводе OPTIMIZE TABLE, когда вы запускаете его в таблице InnoDB, как показано ниже:
mysql> OPTIMIZE TABLE foo;
+----------+----------+----------+-----------------------------------------------------------
| Table | Op | Msg_type | Msg_text
+----------+----------+----------+-----------------------------------------------------------
| test.foo | optimize | note | Table does not support optimize, doing recreate + analyze ...
| test.foo | optimize | status | OK
+----------+----------+----------+-----------------------------------------------------------
Вы можете заставить OPTIMIZE TABLE работать с другими системами хранения, запустив mysqld с параметром -skip-new или -safe-mode. В этом случае OPTIMIZE TABLE просто отображается в ALTER TABLE.
Ответ 2
Синтаксис optimize
таблицы
OPTIMIZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE
tbl_name [, tbl_name] ...
Используйте OPTIMIZE TABLE
в этих случаях, в зависимости от типа таблицы:
- После выполнения существенных операций вставки, обновления или удаления в таблице InnoDB, которая имеет свой собственный .ibd файл, поскольку она была создана с включенным параметром innodb_file_per_table. Таблица и индексы реорганизуются, а дисковое пространство может быть восстановлено для использования операционной системой.
- После удаления большой части таблицы MyISAM или ARCHIVE или внесения большого количества изменений в таблицу MyISAM или ARCHIVE с строками переменной длины (таблицы с столбцами VARCHAR, VARBINARY, BLOB или TEXT). Удаленные строки сохраняются в связанном списке, а последующие операции INSERT повторно используют старые позиции строк. Вы можете использовать OPTIMIZE TABLE для восстановления неиспользуемого пространства и дефрагментации файла данных. После обширных изменений в таблице этот оператор также может повысить производительность операторов, которые используют таблицу, а иногда и значительно.