Las copias de seguridad de bases de datos son una de esas cosas que siguen creciendo cada vez más hasta consumir toda la materia del mundo. A diferencia de los reality shows, puedes eliminar fácilmente elementos de una base de datos para reducir el tamaño de tus copias de seguridad. ¿Pero qué 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 tenemos que hacer es ejecutar una consulta para buscarlo.
Mmm. Quizás necesitemos realizar una consulta mejor.
Entonces, la columna data_length nos da cuántos datos hay realmente en las tablas, así que tal vez si simplemente los incluimos 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 posible que tenga una tabla que almacene un millón de registros, pero si también tiene varios índices en muchas de esas columnas, esos datos deben duplicarse y ordenarse de manera diferente 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 en cambio, mientras estamos en eso. Así que aquí tienes una consulta mejor que te dará la mejor información. 20 tablas 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á un resultado similar a este:
Si desea ver el tamaño de la tabla por separado del tamaño del índice, puede utilizar una consulta como esta:
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, vale la pena mirar sus índices si está intentando reducir el tamaño de su base de datos en el servidor, ya que pueden ser enormes. Pero… no elimine índices sólo porque son grandes: son increíblemente importantes para acelerar las consultas, especialmente en bases de datos grandes.
Y de todos modos los índices no se incluyen en las copias de seguridad de la base de datos.