A veces nos encontramos con la necesidad de saber cuanto están pesando nuestra base de datos, ya sea porque necesitamos que el sitio periforme mejor o porque queremos optimizar nuestro manejo de datos.
MySQL es uno de los motores de bases de datos más utilizados en el desarrollo de aplicaciones web, no es el único, pero si uno de los más populares. Es por esto que la elegí como referencia para este artículo.
Sin más vueltas vamos a explicar como obtener el tamaño de tu base de datos por medio de unas simples consultas a la base de datos.
Primero necesitas conectarte a la base de datos para poder correr las consultas. Esto es algo que puedes realizar ejecutando en tu consola el siguiente comando:
mysql -h DB_HOST -u DB_USERNAME -pDB_PASSWORD DB_DATABASENAMEDonde DB_HOST es el host name de donde se encuentra tu base de datos (si estas trabajando en local puede ser localhost) DB_USERNAME y DB_PASSWORD son el nombre de usuario y contraseña que utilizas respectivamente para conectar a la base de datos y finalmente DB_DATABASENAME es el nombre de la base de datos a la que quieres conectarte.
También puedes usar otras herramientas como MySQL Workbench (por ejemplo) para ejecutar las consultas.
Una vez en la consola de MySQL para obtener el tamaño de nuestra base de datos en MB debemos ejecutar la siguiente consulta:
SELECT table_schema AS "Database",
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)"
FROM information_schema.TABLES
GROUP BY table_schema;Si queremos la misma información pero en GB podemos ejecutar:
SELECT table_schema AS "Database",
ROUND(SUM(data_length + index_length) / 1024 / 1024 / 1024, 2) AS "Size (GB)"
FROM information_schema.TABLES
GROUP BY table_schema;Esto está bastante bueno pero solo nos da una visión general, si queremos tener algo más detallado, podemos ejecutar otras consultas similares para obtener el tamaño detallado por tablas, por ejemplo, para obtener el tamaño de las tablas en MB, podemos ejecutar:
SELECT table_name AS "Table",
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size (MB)"
FROM information_schema.TABLES
WHERE table_schema = "database_name"
ORDER BY (data_length + index_length) DESC;Para obtener la misma información pero en GB, ejecutaremos:
SELECT table_name AS "Table",
ROUND(((data_length + index_length) / 1024 / 1024 / 1024), 2) AS "Size (GB)"
FROM information_schema.TABLES
WHERE table_schema = "database_name"
ORDER BY (data_length + index_length) DESC;Espero que este artículo les haya sido de ayuda.
