OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name[,tbl_name]...
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
. See
Secção 4.6.2, “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:
Se a tabela tem registros excluídos ou dividos, repara a tabela.
Se as páginas de índice não estão ordenas, ordene-as.
Se as estatísticas não estão atualizadas (e o reparo não pode ser feito ordenando o índice), atualize-as.
Perceba que a tabela estará bloqueada durante o tempo em que
OPTIMIZE TABLE
estiver executando.
Antes do MySQL 4.1.1, o OPTIMIZE
comnado não
gravava no log binário. Desde o MySQL 4.1.1 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.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.