MySQL tiene un comando OPTIMIZE TABLE que se puede utilizar para recuperar el espacio no utilizado en una instalación de MySQL. ¿Existe una forma (comando incorporado o procedimiento almacenado común) de ejecutar esta optimización para cada tabla en la base de datos y/o instalación del servidor, o es algo que tendría que programar usted mismo?
Puedes usar mysqlcheck
para hacer esto en la línea de comandos.
Una base de datos:
mysqlcheck -o <db_schema_name>
Todas las bases de datos:
mysqlcheck -o --all-databases
El siguiente ejemplo de script php puede ayudarle a optimizar todas las tablas de su base de datos
<?php
dbConnect();
$alltables = mysql_query("SHOW TABLES");
while ($table = mysql_fetch_assoc($alltables))
{
foreach ($table as $db => $tablename)
{
mysql_query("OPTIMIZE TABLE '".$tablename."'")
or die(mysql_error());
}
}
?>
El Administrador MySQL
(parte de las herramientas GUI de MySQL) puede hacerlo por usted a nivel de base de datos.
Sólo tienes que seleccionar tu esquema y pulsar el botón Mantenimiento
en la esquina inferior derecha.
Desde que las Herramientas GUI han llegado al final de su vida útil son difíciles de encontrar en la página de mysql. Las encontré a través de Google: http://dev.mysql.com/downloads/gui-tools/5.0.html
No sé si el nuevo MySQL Workbench puede hacer eso también.
Y puedes usar la herramienta de línea de comandos mysqlcheck
que debería poder hacerlo también.