mysql-logo.png

Anteriormente expliqué cómo obtener el tamaño de todas las bases de datos de un servidor MySQL. Esta vez necesitaba saber el tamaño de cada tabla dentro de una misma base de datos.

Para obtener esta información es necesario ejecutar la siguiente consulta:

SELECT table_name Tabla,(data_length+index_length) Tamaño FROM information_schema.tables WHERE table_schema='midb';

Reemplazando "midb" por el nombre de la base de datos en cuestión. Por ejemplo:

mysql> SELECT table_name Tabla,(data_length+index_length) Tamaño FROM information_schema.tables WHERE table_schema='midb';
+-------------------+------------+
| Tabla             | Tamaño     |
+-------------------+------------+
| adjuntos          |      16384 |
| agendas           |     162004 |
| archivos          |  423252948 |
| biblioteca        |     120540 |
| boletines         |       5288 |
| cursos            |       7456 |
| informacion       | 1055617708 |
| links             |     131072 |
| logs              |       3436 |
| noticias          |      16384 |
| programas         |   15700552 |
| resultados        |       2688 |
| salas             |      25372 |
| tutoriales        |      25096 |
| usuarios          |       7524 |
+-------------------+------------+
15 rows in set (0.00 sec)

El tamaño está expresado en bytes. Para expresar los tamaños en MB, simplemente dividir por 1024*1024:

mysql> SELECT table_name Tabla,(data_length+index_length)/(1024*1024) Tamaño FROM information_schema.tables WHERE table_schema='midb';
+-------------------+-----------+
| Tabla             | Tamaño    |
+-------------------+-----------+
| adjuntos          |    0.0156 |
| agendas           |    0.1545 |
| archivos          |  403.6455 |
| biblioteca        |    0.1150 |
| boletines         |    0.0050 |
| cursos            |    0.0071 |
| informacion       | 1006.7155 |
| links             |    0.1250 |
| logs              |    0.0033 |
| noticias          |    0.0156 |
| programas         |   14.9732 |
| resultados        |    0.0026 |
| salas             |    0.0242 |
| tutoriales        |    0.0239 |
| usuarios          |    0.0072 |
+-------------------+-----------+
15 rows in set (0.01 sec)

Si en cambio se desea conocer el tamaño de una única tabla, filtrar en la cláusula WHERE:

SELECT table_name Tabla,(data_length+index_length) Tamaño FROM information_schema.tables WHERE table_schema='midb' and table_name='mitabla';

Reemplazando "midb" y "mitabla" por la base de datos y tabla correspondientes.

Tener en cuenta que se trata del tamaño que ocupan datos más índices, lo cual no necesariamente corresponde con el tamaño que ocupan las tablas en disco. Para tablas InnoDB pequeñas el tamaño en disco puede ser muy superior, debido al espacio que reserva por adelanto el motor InnoDB. Sin embargo, para tablas de gran tamaño, la diferencia es insignificante. Para mayor información recomiendo leer el siguiente artículo.

 

Fuente: linuxito

¿Quién está en línea?

Hay 26894 invitados y ningún miembro en línea