Que vamos ver en este artículo
1) Tamaño total de una base de datos
Para ver el total de una base de datos, lo que ocupa, en MB se puede ejecutar la siguiente consulta:
SELECT table_schema AS 'Base de Datos',
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 'Tamaño (MB)'
FROM information_schema.tables
WHERE table_schema = 'netveloper_local'
GROUP BY table_schema;
Donde:
- data_length mide el tamaño de los datos almacenados en las tablas.
- index_length mide el tamaño de los índices de las tablas.
- La suma de ambos nos da el tamaño total de la base de datos.
- La división por 1024 / 1024 convierte los bytes en megabytes (MB).

2) Tamaño de cada tabla en una base de datos
Si lo que queremos es ver el tamaño de las tablas de una base de datos se puede ejecutar esta consulta:
SELECT table_name AS 'Tabla',
ROUND((data_length + index_length) / 1024 / 1024, 2) AS 'Tamaño (MB)'
FROM information_schema.tables
WHERE table_schema = 'netveloper_local'
ORDER BY (data_length + index_length) DESC;

Si en lugar del tamaño queremos ver el total de tablas por registros se puede ejecutar esta consulta:
SELECT table_name AS 'Tabla',
table_rows AS 'Registros'
FROM information_schema.tables
WHERE table_schema = 'netveloper_local'
ORDER BY table_rows DESC;
Que el resultado en lugar de dar las MB dará los registros que tiene cada tabla.
Es importante tener en cuenta que
- Para tablas MyISAM, el valor de table_rows es exacto.
- Para tablas InnoDB, es solo una estimación y puede no ser 100% precisa.
- Si necesitas un número exacto de registros en InnoDB, usa:
Aunque esto seria tabla a tabla, si queremos para todas las tablas ya tendremos que inventar algo comoSELECT 'nombre_de_la_tabla' AS Tabla, COUNT(*) AS Registros FROM nombre_de_la_tabla;
Donde el resultado seria la unión de la consulta anterior para todas las tablas con el siguiente resultado:SELECT CONCAT('SELECT ''', table_name, ''' AS Tabla, COUNT(*) AS Registros FROM ', table_name, ' UNION ALL ') FROM information_schema.tables WHERE table_schema = 'netveloper_local';
Con lo que al ejecutar todas las consultas juntas dará el resultado de el total de registros por tabla.
3) Tamaño de todas las bases de datos en el servidor
Con esta consulta obtenemos el tamaño de todas las bases de datos del servidor en MB y en registos
SELECT table_schema AS 'Base de Datos',
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 'Tamaño (MB)',
SUM(table_rows) AS 'Total Registros'
FROM information_schema.tables
GROUP BY table_schema
ORDER BY SUM(data_length + index_length) DESC;
4) Tamaño total ocupado por MySQL en disco
Y si lo que queremos es ver el espacio en disco tendremos que ir al sistema y ejecutar este comandodu -sh /var/lib/mysql/
En windows habrá que mirar donde esta instalado buscando por MySql en el disco y dentro en la carpeta dataY esto es todo, feliz programming!!!
Saludos
Alex
:-)
/