2011-02-16 12 views

Respuesta

8

Este link tiene una consulta muy intenso ... que le dará más de lo necesario ...:

SELECT s.schema_name, 
CONCAT(IFNULL(ROUND((SUM(t.data_length)+SUM(t.index_length)) /1024/1024,2),0.00)) total_size_in_MB, 
CONCAT(IFNULL(ROUND(((SUM(t.data_length)+SUM(t.index_length))-SUM(t.data_free))/1024/1024,2),0.00)) data_used_IN_MB, 
CONCAT(IFNULL(ROUND(SUM(data_free)/1024/1024,2),0.00)) data_free_IN_MB, 
IFNULL(ROUND((((SUM(t.data_length)+SUM(t.index_length))-SUM(t.data_free))/((SUM(t.data_length)+SUM(t.index_length)))*100),2),0) pct_used, 
COUNT(table_name) total_tables 
FROM INFORMATION_SCHEMA.SCHEMATA s 
LEFT JOIN INFORMATION_SCHEMA.TABLES t ON s.schema_name = t.table_schema 
WHERE s.schema_name = 'abc' -- give your schema name 
GROUP BY s.schema_name 
ORDER BY pct_used DESC; 
+1

Que es efectivamente una 'SUMA' formateada de los valores 'data_length' en' INFORMATION_SCHEMA.TABLES'. – Orbling

1

intente buscar en la información dada por

SHOW TABLE STATUS FROM dbname; 

La columna Data_length debe ser de su interés.

Ver: http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html

O si necesita acceso en el contexto de una consulta normal, entonces el contenido de INFORMATION_SCHEMA.TABLES tablas pueden ayudar. (Ver: http://dev.mysql.com/doc/refman/5.1/en/tables-table.html)

+0

Gracias, ¿Data_length in byte? – Cory

+0

@Cory: eso creo. – Orbling

+0

Sí, está en bytes. Pero index_length también es importante, ya que puede ser tanto o más que data_length. –

2

Si usted está buscando el uso de espacio de disco real acerca de lo simplemente calculando el tamaño del directorio de datos mysql usando una utilidad de sistema de archivos como "du"?

+1

Eso le muestra la cantidad de espacio de archivos que los archivos ocupan, pero los archivos pueden estar parcialmente vacíos. También puede haber archivos de registro en el directorio de datos, que no son parte de sus datos. –

Cuestiones relacionadas