Cómo monitorear el tamaño y crecimiento de bases en MySQL
Saber cuánto ocupan tus datos y qué tan rápido crecen es básico para planear disco y anticipar problemas. MySQL expone esta información en information_schema.tables, con estimaciones de espacio de datos e índices por tabla.
- 1
Mide el tamaño total por base de datos
Suma datos e índices de todas las tablas y conviértelo a megabytes. Da el panorama general en un vistazo.
SELECT table_schema AS base, ROUND(SUM(data_length + index_length)/1024/1024, 1) AS tamano_mb FROM information_schema.tables GROUP BY table_schema ORDER BY tamano_mb DESC; - 2
Encuentra las tablas más grandes
Separa datos de índices: a veces los índices pesan más que los datos y ahí hay algo que revisar.
SELECT table_schema, table_name, ROUND(data_length/1024/1024, 1) AS datos_mb, ROUND(index_length/1024/1024, 1) AS indices_mb, table_rows AS filas_aprox FROM information_schema.tables WHERE table_schema NOT IN ('mysql','information_schema','performance_schema','sys') ORDER BY (data_length + index_length) DESC LIMIT 15; - 3
Detecta espacio desperdiciado
data_free indica espacio liberado pero no devuelto al sistema, típico tras muchos DELETE. Un valor alto sugiere fragmentación.
SELECT table_name, ROUND(data_free/1024/1024, 1) AS espacio_libre_mb FROM information_schema.tables WHERE table_schema = 'mi_base' AND data_free > 0 ORDER BY data_free DESC;
// el error común
table_rows y los tamaños en information_schema son estimaciones del optimizador para tablas InnoDB, no valores exactos. Sirven muy bien para tendencias y comparaciones, pero no los uses como conteo preciso; para eso usa SELECT COUNT(*).
// cuándo conviene un experto
Cuando el disco crece más rápido de lo esperado o no sabes cuánto durará el espacio libre, conviene proyectar. En dba.mx montamos monitoreo de crecimiento con alertas tempranas y planes de purga o archivado, con techo cerrado.
Agenda un Escaneo — desde USD $550Esta guía es orientativa y usa comandos de referencia. En producción, adapta a tu versión y prueba en un ambiente seguro primero.