Cómo ver qué tablas de MySQL ocupan más espacio

Share on facebook
Share on twitter
Share on linkedin
Share on telegram
Share on whatsapp

Contenidos

Logotipo de MySQL

Las copias de seguridad de las bases de datos son una de esas cosas que se hacen cada vez más grandes hasta que consumen toda la materia del mundo. A diferencia de la televisión de realidad, puede borrar fácilmente cosas en una base de datos para hacer sus copias de seguridad más pequeñas. ¿Pero que cosas?

MySQL almacena metainformación sobre bases de datos y tablas en la base de datos information_schema, y ​​la información específica sobre tablas se almacena en la tabla TABLES. Entonces, todo lo que haremos es ejecutar una consulta para buscarlo.

Mmm. Tal vez necesitemos ejecutar una consulta mejor.

Entonces, la columna data_length nos da cuántos datos hay verdaderamente en las tablas, por lo tanto tal vez si solo incluimos eso y ordenamos, obtendremos algo mejor … hmm … ahora esto está en bytes. Muy bien, basta de tonterías.

MySQL tiene dos lugares donde se almacenan grandes conjuntos de datos: tablas e índices. Es factible que tenga una tabla que almacene un millón de registros, pero si además tiene un montón de índices en muchas de esas columnas, esos datos deben duplicarse y ordenarse de una manera distinto y almacenarse en el índice de cada uno.

Entonces, para obtener un tamaño de tabla real, necesitaremos incluir la longitud del índice. Y no estaría de más convertir de bytes a MB, dado que estamos en eso. Por lo tanto aquí hay una consulta mejor que le dará las 20 tablas principales para todas las bases de datos en su servidor.

select table_schema as db,table_name, round((data_length+index_length) / 1048576,1) as size from information_schema.tables order by data_length+index_length desc limit 20;

Lo que le dará una salida semejante a esta:

si desea ver el tamaño de la tabla de forma separada del tamaño del índice, puede utilizar una consulta como esta en su lugar:

select table_schema as db,table_name, round((data_length) / 1048576,1) as tablesize,round((index_length) / 1048576,1) as indexsize from information_schema.tables order by data_length desc limit 20;

Como puede ver, es importante destacar mirar sus índices si está tratando de reducir el tamaño de su base de datos en el servidor, dado que pueden ser enormes. Pero … no elimine índices solo debido a que son grandes, son increíblemente importantes para acelerar las consultas, especialmente en bases de datos grandes.

Y los índices no se incluyen en las copias de seguridad de la base de datos de todos modos.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.