PHP:¿Cómo conocer el tamaño en bytes de una Base de Datos MySQL?

De Foros del Web

La consulta:

SHOW TABLE STATUS

Te muestra información sobre las tablas de una base de datos. Entre los campos que te muestra, hay uno que es 'Data_length', bueno, pues eso es lo que ocupan los datos de cada tabla.

Lo que ocurre es que además de los datos, también puede representar bastante espacio lo asignado para cada índice. Y esto lo indica en el campo 'Index_length'

Para obtener el valor total de la base de datos, se me ocurre emplear, por ejemplo, PHP para recuperar todos los valores y sumarlos posteriormente.

Sería algo como:

Código PHP:

mysql_connect(Datos de conexion) or die(mysql_error()); 
mysql_select_db("base_de_datos") or die(mysql_error()); 
 
$sql = "SHOW TABLE STATUS"; 
$resultado = mysql_query($sql) or die(mysql_error()); 
 
$total = 0; 
while ($tabla = mysql_fetch_assoc($resultado)) 
 $total += ($tabla['Data_length']+$tabla['Index_length']); 
 
echo $total;  

Es decir, en la variable $total tenemos cuánto ocupa la base de datos "base_de_datos" (en bytes).

Si queremos mostrar ese valor en KB, es muy sencillo...

Código PHP:

$total_temp = $total / 1024; 
$total_kb = number_format($total_temp, 0, ",", ".")+1; 
 
// después... 
echo $total_kb;  

--BVis 20 Mar 2003

Este artículo es parte de las FAQs de PHP y el Manual de PHP.

Herramientas personales