Les sauvegardes de bases de données sont l'une de ces choses qui deviennent de plus en plus grosses jusqu'à ce qu'elles consomment toutes les choses du monde.. Contrairement à la télé-réalité, vous pouvez facilement supprimer des éléments d'une base de données pour réduire la taille de vos sauvegardes. Mais quelles choses?
MySQL stocke les méta-informations sur les bases de données et les tables dans la base de données information_schema, et les informations spécifiques sur les tables sont stockées dans la table TABLES. Ensuite, tout ce que nous ferons est d'exécuter une requête pour le trouver.
mmm. Peut-être que nous devons exécuter une meilleure requête.
Ensuite, la colonne data_length nous donne combien de données sont réellement dans les tables, alors peut-être que si nous incluons simplement cela et commandons, nous aurons quelque chose de mieux … Hmm … maintenant c'est en octets. Très bien, Assez de bêtises.
MySQL a deux emplacements où de grands ensembles de données sont stockés: tableaux et index. Vous pouvez avoir une table qui stocke un million d'enregistrements, mais si vous avez aussi beaucoup d'index sur plusieurs de ces colonnes, que les données doivent être dupliquées et ordonnées d'une manière différente et stockées dans l'index de l'autre.
Ensuite, pour obtenir une vraie taille de table, nous devrons inclure la longueur de l'index. Et cela ne ferait pas de mal de convertir des octets en Mo, puisque nous sommes dessus. Voici donc une meilleure requête qui vous donnera le 20 tables principales pour toutes les bases de données sur votre serveur.
sélectionnez table_schema comme db,nom de la table, tour((longueur_données+longueur_index) / 1048576,1) comme taille de information_schema.tables ordre par data_length+index_length desc limite 20;
Qu'est-ce qui vous donnera une sortie similaire à celle-ci:
si vous voulez voir la taille de la table séparément de la taille de l'index, vous pouvez utiliser une requête comme celle-ci à la place:
sélectionnez table_schema comme db,nom de la table, tour((longueur_données) / 1048576,1) comme taille de table,tour((longueur_index) / 1048576,1) comme indexsize de information_schema.tables ordre par data_length desc limite 20;
Comme tu peux le voir, important de noter en regardant vos index si vous essayez de réduire votre base de données sur le serveur, car ils peuvent être énormes. Mais … ne supprimez pas les index simplement parce qu'ils sont volumineux, sont extrêmement importants pour accélérer les requêtes, surtout dans les grandes bases de données.
Et les index ne sont pas inclus dans les sauvegardes de la base de données de toute façon.