Limpiar tablas innecesarias en MySQL
¿Por qué limpiar tablas innecesarias?
Con el tiempo, las bases de datos pueden acumular tablas que ya no se usan: tablas de prueba, datos antiguos, tablas temporales o estructuras obsoletas. Limpiar estas tablas ayuda a:
- Reducir el tamaño de la base de datos
- Mejorar el rendimiento de las consultas
- Facilitar el mantenimiento
- Reducir el tiempo de backups
- Liberar espacio en disco
Identificar tablas innecesarias
1. Listar todas las tablas de una base de datos
mysql -u root -p
USE nombre_base_datos;
SHOW TABLES;
2. Ver el tamaño de cada tabla
SELECT
table_name AS 'Tabla',
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS 'Tamaño (MB)'
FROM information_schema.TABLES
WHERE table_schema = 'nombre_base_datos'
ORDER BY (data_length + index_length) DESC;
3. Ver tablas vacías
SELECT
table_name AS 'Tabla',
table_rows AS 'Filas'
FROM information_schema.TABLES
WHERE table_schema = 'nombre_base_datos'
AND table_rows = 0;
Tablas comunes que se pueden eliminar
- Tablas de prueba:
test_*,tmp_*,temp_* - Tablas de plugins desinstalados: En WordPress, Joomla, etc.
- Tablas de logs antiguos: Logs que ya no se necesitan
- Tablas de caché obsoletas: Caché que se regenera automáticamente
- Tablas de backups antiguos: Backups que ya están en otro lugar
Proceso seguro para eliminar tablas
1. Hacer backup antes de eliminar
Antes de eliminar cualquier tabla, hacé un backup completo:
mysqldump -u root -p nombre_base_datos > backup_antes_limpieza.sql
2. Verificar que la tabla no se use
Revisá tu aplicación, código fuente o documentación para confirmar que la tabla no se está usando.
3. Verificar dependencias
Algunas tablas pueden tener relaciones con otras. Verificá las claves foráneas:
SELECT
TABLE_NAME,
COLUMN_NAME,
CONSTRAINT_NAME,
REFERENCED_TABLE_NAME,
REFERENCED_COLUMN_NAME
FROM information_schema.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = 'nombre_base_datos'
AND REFERENCED_TABLE_NAME = 'nombre_tabla';
4. Eliminar la tabla
DROP TABLE nombre_tabla;
Para eliminar múltiples tablas:
DROP TABLE tabla1, tabla2, tabla3;
Limpiar tablas de WordPress (ejemplo)
WordPress a veces deja tablas de plugins desinstalados. Para identificarlas:
-- Ver todas las tablas de WordPress
SHOW TABLES LIKE 'wp_%';
-- Ver tablas que no son estándar de WordPress
-- Las tablas estándar son: wp_posts, wp_users, wp_options, wp_comments, etc.
-- Las tablas de plugins suelen tener nombres como wp_plugin_name_*
Antes de eliminar, verificá en el código del plugin o en la documentación.
Limpiar tablas temporales
Las tablas temporales suelen tener nombres como tmp_*, temp_* o test_*:
-- Listar tablas temporales
SELECT table_name
FROM information_schema.TABLES
WHERE table_schema = 'nombre_base_datos'
AND (table_name LIKE 'tmp_%'
OR table_name LIKE 'temp_%'
OR table_name LIKE 'test_%');
Si estás seguro de que no se necesitan, eliminálas:
DROP TABLE tmp_tabla1, tmp_tabla2;
Limpiar datos antiguos sin eliminar la tabla
Si la tabla es necesaria pero querés eliminar datos antiguos:
-- Eliminar registros antiguos (ejemplo: más de 1 año)
DELETE FROM nombre_tabla
WHERE fecha < DATE_SUB(NOW(), INTERVAL 1 YEAR);
Después de eliminar datos, optimizá la tabla:
OPTIMIZE TABLE nombre_tabla;
Script para identificar tablas grandes y vacías
Podés usar este script para identificar tablas que ocupan mucho espacio pero están vacías o tienen pocos datos:
SELECT
table_name AS 'Tabla',
table_rows AS 'Filas',
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS 'Tamaño (MB)',
ROUND((data_length / 1024 / 1024), 2) AS 'Datos (MB)',
ROUND((index_length / 1024 / 1024), 2) AS 'Índices (MB)'
FROM information_schema.TABLES
WHERE table_schema = 'nombre_base_datos'
AND table_rows < 100
AND (data_length + index_length) > 10485760 -- Más de 10MB
ORDER BY (data_length + index_length) DESC;
Precauciones importantes
- Nunca eliminés tablas sin hacer backup: Siempre hacé un backup completo antes.
- Verificá dependencias: Algunas tablas pueden ser necesarias aunque no se usen directamente.
- Probá en desarrollo primero: Si es posible, probá la eliminación en un entorno de desarrollo.
- Documentá lo que eliminás: Guardá un registro de las tablas eliminadas y cuándo.
- No eliminés tablas del sistema: Nunca eliminés tablas de
mysql,information_schemaoperformance_schema.
Recuperar espacio después de eliminar tablas
Después de eliminar tablas, optimizá la base de datos para recuperar espacio:
-- Optimizar todas las tablas restantes
mysqlcheck -u root -p --optimize nombre_base_datos
O desde MySQL:
USE nombre_base_datos;
OPTIMIZE TABLE tabla1, tabla2, tabla3;
Verificar espacio liberado
Para ver el tamaño total de la base de datos antes y después:
SELECT
table_schema AS 'Base de Datos',
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 'Tamaño Total (MB)'
FROM information_schema.TABLES
WHERE table_schema = 'nombre_base_datos'
GROUP BY table_schema;
¿Necesitás ayuda?
Si tenés dudas sobre qué tablas eliminar o necesitás asistencia para limpiar tu base de datos, abrí un ticket desde el panel de billing.baires.host o contactanos por soporte.
También podés escribirnos por nuestras redes:
- Instagram: @baires_host
- Discord (soporte activo): https://discord.gg/dzjauatAFN
- Linktree: https://linktr.ee/baires.host