10 febrero 2012

Cómo saber que tamaño tiene una base de datos en mysql

Desde el cambio a la versión 5 de MySQL in con la introducción de las vistas del Information_schema, saber qué tamaño tiene una base de datos es relativamente fácil, tan fácil como ejecutar esta consulta:



SELECT table_schema "Data Base Name", sum( data_length + index_length ) / 1024 / 1024 "Data Base Size in MB"

FROM information_schema.TABLES GROUP BY table_schema ; 


El problema surge cuando tenemos una base de datos de la versión 4, ya que en estas versiones MySQL no disponía de Information_schema.

Yo he hecho un pequeño script que  parsea la información que proporciona el SHOW TABLE STATUS, de modo que me da un valor aproximado.

El script sería éste:
(lista_basesdatos es una lista con las bases de datos que quiero medir)


#!/bin/bash



for i in `cat lista_basesdedatos`; do



a=`mysql -u root -D ${i} -e 'show table status\G'|grep Data_l|awk '{print $2}'|(tr '\n' +; echo 0)|bc`

b=`mysql -u root -D ${i} -e 'show table status\G'|grep Index_l|awk '{print $2}'|(tr '\n' +; echo 0)|bc`



resultado=`echo $a+$b|bc`;



echo $i $resultado

done








1 comentario:

Anónimo dijo...

Muchas gracias!!!, de verdad tu query es muy bueno y me ayudaste mucho. Saludos cordiales