Sintaxe de OPTIMIZE TABLE


OPTIMIZE TABLE deve ser usado se você apagou uma grande parte de uma tabela ou se você fez várias alterações à uma tabela com registros de tamanho variável (tabelas que tenham campos do tipo VARCHAR, BLOB ou TEXT). Registros apagados são mantidos em uma lista de ligações e operações INSERT subsequentes reutilizam posições de registros antigos. Você pode utilizar OPTIMIZE TABLE para reclamar o espaço inutilizado e para desfragmentar o arquivo de dados.

Na maioria da configurações você não tem que executar OPTIMIZE TABLE. Mesmo se você fizer diversas atualizações para registros de tamanhos variáveis não é desejável que você precise fazer isto mais que uma vez por mês/semana e apenas em determinadas tabelas.

No momento OPTIMIZE TABLE só funciona em tabelas MyISAM e BDB. Para tabelas BDB, OPTIMIZE TABLE é atualmente mapeado para ANALIZE TABLE. Leia "Sintaxe de ANALYZE TABLE".

Você pode ter a otimização de tabelas trabalhando em outros tipos de tabelas iniciando o mysqld com --skip-new ou --safe-mode, mas neste caso, OPTIMIZE TABLE é mapeado apenas para ALTER TABLE.

OPTIMIZE TABLE funciona da seguinte forma:

Perceba que a tabela estará bloqueada durante o tempo em que OPTIMIZE TABLE estiver executando.

Antes do MariaDB, o OPTIMIZE comnado não gravava no log binário. Desde o MariaDB eles são escritos no log binário a menos que a palavra chave opcional NO_WRITE_TO_BINLOG (ou se alias LOCAL) seja usada.

Retornar