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_schema o performance_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:

¿Fue útil la respuesta? 0 Los Usuarios han Encontrado Esto Útil (0 Votos)