A continuación veremos una serie de consultas útiles, sobre la base de datos information-schema de MySQL para visualizar:
- Cantidad de tablas, filas, tamaño de archivos de datos e índices y relación de tamaño indice/datos
- Listado de las tablas más grandes
- Distribución de datos por motor de almacenamiento
Cantidad de tablas, filas, tamaño de archivos de datos e índices y relación de tamaño indice/datos
SELECT
count(*) TABLES
,concat(round(sum(table_rows)/1000000,2),'K') rows
,concat(round(sum(data_length)/(1024*1024*1024),2),'G') DATA
,concat(round(sum(index_length)/(1024*1024*1024),2),'G') idx
,concat(round(sum(data_length+index_length)/(1024*1024*1024),2),'G') total_size
,round(sum(index_length)/sum(data_length),2) idxfrac
FROM
information_schema.TABLES;
-- Si deseamos filtrar por tabla aplicamos una condición
-- WHERE
-- WHERE table_name LIKE "%tabla_buscada%";
count(*) TABLES
,concat(round(sum(table_rows)/1000000,2),'K') rows
,concat(round(sum(data_length)/(1024*1024*1024),2),'G') DATA
,concat(round(sum(index_length)/(1024*1024*1024),2),'G') idx
,concat(round(sum(data_length+index_length)/(1024*1024*1024),2),'G') total_size
,round(sum(index_length)/sum(data_length),2) idxfrac
FROM
information_schema.TABLES;
-- Si deseamos filtrar por tabla aplicamos una condición
-- WHERE
-- WHERE table_name LIKE "%tabla_buscada%";
Listado de las tablas más grandes
SELECT
count(*) TABLES
,table_schema,concat(round(sum(table_rows)/1000000,2),'M') rows
,concat(round(sum(data_length)/(1024*1024*1024),2),'G') DATA
,concat(round(sum(index_length)/(1024*1024*1024),2),'G') idx
,concat(round(sum(data_length+index_length)/(1024*1024*1024),2),'G') total_size
,round(sum(index_length)/sum(data_length),2) idxfrac
FROM
information_schema.TABLES
GROUP BY
table_schema
ORDER BY
sum(data_length+index_length) DESC LIMIT 10;
count(*) TABLES
,table_schema,concat(round(sum(table_rows)/1000000,2),'M') rows
,concat(round(sum(data_length)/(1024*1024*1024),2),'G') DATA
,concat(round(sum(index_length)/(1024*1024*1024),2),'G') idx
,concat(round(sum(data_length+index_length)/(1024*1024*1024),2),'G') total_size
,round(sum(index_length)/sum(data_length),2) idxfrac
FROM
information_schema.TABLES
GROUP BY
table_schema
ORDER BY
sum(data_length+index_length) DESC LIMIT 10;
Distribución de datos por motor de almacenamiento
SELECT
engine
,count(*) TABLES
,concat(round(sum(table_rows)/1000000,2),'M') rows
,concat(round(sum(data_length)/(1024*1024*1024),2),'G') DATA
,concat(round(sum(index_length)/(1024*1024*1024),2),'G') idx
,concat(round(sum(data_length+index_length)/(1024*1024*1024),2),'G') total_size
,round(sum(index_length)/sum(data_length),2) idxfrac
FROM
information_schema.TABLES
GROUP BY
engine
ORDER BY
sum(data_length+index_length) DESC LIMIT 10;
engine
,count(*) TABLES
,concat(round(sum(table_rows)/1000000,2),'M') rows
,concat(round(sum(data_length)/(1024*1024*1024),2),'G') DATA
,concat(round(sum(index_length)/(1024*1024*1024),2),'G') idx
,concat(round(sum(data_length+index_length)/(1024*1024*1024),2),'G') total_size
,round(sum(index_length)/sum(data_length),2) idxfrac
FROM
information_schema.TABLES
GROUP BY
engine
ORDER BY
sum(data_length+index_length) DESC LIMIT 10;


Hector Diaz
octubre 26, 2011
Saludos, muy buena info, ¿existe algún comando para indicar el peso (bytes) de un registro en una tabla?