OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLEtbl_name
[,tbl_name
] ...
OPTIMIZE TABLE
debe usarse si ha borrado
una gran parte de la tabla o si ha hecho varios cambios en una
tabla con registros de longitud variable (tablas que tienen
columnas VARCHAR
, BLOB
,
o TEXT
). Los registros borrados se
mantienen en una lista enlazada y operaciones
INSERT
posteriores reúsan posiciones de
antiguos registros. Puede usar OPTIMIZE
TABLE
para reclamar el usuario no usado y para
defragmentar el fichero de datos.
En la mayoría de inicializaciones, no necesita ejecutar
OPTIMIZE TABLE
para nada. Incluso si hace
muchas actualizaciones a registros de longitud variables, no
es probable que necesite hacerlo más de una vez a la semana o
mes y sólo en ciertas tablas.
Actualmente, OPTIMIZE TABLE
funciona sólo
en tablas MyISAM
, BDB
y
InnoDB
.
Para tablas MyISAM
, OPTIMIZE
TABLE
funciona como sigue:
Si la tabla ha borrado o dividido registros, repare la tabla.
Si las páginas índice no están ordenadas, ordénelas.
Si las estadísticas no están actualizadas (y la reparación no puede hacerse ordenando el índice), actualícelas.
Para tablas BDB
, OPTIMIZE
TABLE
es mapea como ANALYZE
TABLE
. Para tablas InnoDB
, se
mapea con ALTER TABLE
, que reconstruye la
tabla. Reconstruye las estadísticas actualizadas de índice y
libera espacio no usado en el índice clusterizado. Consulte
Sección 13.5.2.1, “Sintaxis de ANALYZE TABLE
”.
Puede hacer que OPTIMIZE TABLE
funcione con
otros tipos de tabla arrancando mysqld con
la opción --skip-new
o
--safe-mode
; en este caso
OPTIMIZE TABLE
se mapea con ALTER
TABLE
.
Tenga en ceunta que MySQL bloquea la tabla mientras se ejecuta
OPTIMIZE TABLE
.
En MySQL 5.0, los comandos OPTIMIZE TABLE
se escriben en el log binario a no ser que la palabra
NO_WRITE_TO_BINLOG
opcional(o su alias
LOCAL
) se use. Esto se hace para que los
comandos OPTIMIZE TABLE
se usen en MySQL
server actuando como maestro de replicación se replique por
defecto en el esclavo de replicación.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.