REBUILD EN MYSQL: QUÉ HACE Y CUÁNDO UTILIZARLO
El comando "REBUILD" en MySQL se utiliza para reconstruir una tabla o sus particiones. Es una operación muy útil, especialmente en tablas grandes o particionadas.¿Qué hace exactamente el REBUILD?
- Reconstruye físicamente la tabla o partición desde cero.
- Reorganiza los datos de forma contigua (elimina fragmentación).
- Libera espacio no utilizado (DATA_FREE).
- Reconstruye los índices secundarios.
- Actualiza las estadísticas de la tabla.
- Puede mejorar significativamente el rendimiento de consultas.
Sintaxis más usada
Para tablas normales (no particionadas)
//Forma recomendada en MySQL 8.0
ALTER TABLE nombre_tabla REBUILD;
//Forma alternativa (también muy usada)
ALTER TABLE nombre_tabla FORCE;
Para tablas particionadas (la más común)
//Reconstruir todas las particiones
ALTER TABLE nombre_tabla REBUILD PARTITION ALL;
//Reconstruir una partición específica
ALTER TABLE nombre_tabla REBUILD PARTITION p2023, p2024;
Diferencias importantes entre OPTIMIZE y REBUILD
Ejemplo práctico
-- Verificar espacio libre
SELECT TABLE_NAME, ENGINE, TABLE_ROWS, DATA_LENGTH, DATA_FREE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'mi_base'
AND TABLE_NAME = 'ventas';
-- Reconstruir
ALTER TABLE ventas REBUILD PARTITION ALL;
Cuándo usar REBUILD
- Después de muchas inserciones, actualizaciones y borrados (alta fragmentación).
- Después de eliminar una gran cantidad de datos.
- Cuando DATA_FREE es muy alto en "information_schema.TABLES".
- Para recuperar espacio en disco.
- Como mantenimiento periódico en tablas particionadas.
- Después de cambiar el motor de almacenamiento o configuración.