OPTIMIZE TABLE
OPTIMIZE TABLE tbl_name[,tbl_name]...
Команда OPTIMIZE TABLE
должна использоваться после удаления большей части
таблицы или если в таблице было внесено много изменений в строки
переменной длины (таблицы, в которых есть столбцы VARCHAR
, BLOB
или TEXT
).
Удаленные записи поддерживаются при помощи связного списка, и последующие
операции INSERT
повторно используют позиции старых записей. Чтобы
перераспределить неиспользуемое пространство и дефрагментировать файл
данных, можно воспользоваться командой OPTIMIZE TABLE
.
На данный момент команда OPTIMIZE TABLE
работает только с таблицами MyISAM
и BDB
. Для таблиц BDB
команда OPTIMIZE TABLE
выполняет ANALYZE TABLE
. См.
раздел See section 4.5.2 Синтаксис команды ANALYZE TABLE
.
Можно применить OPTIMIZE TABLE
к таблицам других типов, запустив
mysqld
с параметром --skip-new
или --safe-mode
, но в этом случае
OPTIMIZE TABLE
лишь только выполняет ALTER TABLE
.
Команда OPTIMIZE TABLE
работает следующим образом:
Команда OPTIMIZE TABLE
для MyISAM
представляет собой эквивалент
выполнения myisamchk --quick --check-only-changed --sort-index --analyze
над таблицей.
Обратите внимание: во время работы OPTIMIZE TABLE
таблица заблокирована!
User Comments
myisamchk --quick --check-only-changed --sort-index --analyze
do a myisamchk on the table.
--
notice the deleted blocks in the right hand corner of the dialog. The stat still indicates a number > 0 for tables with deleted blocks.
===
myisamchk -r --sort-index --analyze *.MYI fixes that number. I'm inclined to believe the myisamchk *.MYI number since the table I'm "optimizing" does get a lot of deletes.
Add your own comment.