Je peux exécuter cette requête pour obtenir les tailles de toutes les tables dans une base de données MySQL:
show table status from myDatabaseName;
J'aimerais avoir de l'aide pour comprendre les résultats. Je recherche des tables avec les plus grandes tailles.
Quelle colonne dois-je consulter?
Réponses:
Vous pouvez utiliser cette requête pour afficher la taille d'une table (même si vous devez d'abord remplacer les variables):
ou cette requête pour répertorier la taille de chaque table dans chaque base de données, la plus grande en premier:
la source
AND table_name IN ('table_1', 'table_2', 'table_3');
VARCHAR
etBLOB
tapez-vous?Vous pouvez obtenir le nom de schéma de « information_schema » -> schèmes Table -> « SCHEMA_NAME colonne »
Supplémentaire Vous pouvez obtenir la taille des bases de données MySQL comme suit.
Résultat
Vous pouvez obtenir des détails supplémentaires ici.
la source
Cela trie les tailles (taille DB en Mo).
la source
Si vous souhaitez qu'une requête utilise la base de données actuellement sélectionnée. copiez simplement collez cette requête. (Aucune modification requise)
la source
SIZE_MB
FROM information_schema.TABLES WHERE table_schema = DATABASE () ORDER BY (data_length + index_length) ASC;Il existe un moyen simple d'obtenir de nombreuses informations à l'aide de Workbench:
Cliquez avec le bouton droit sur le nom du schéma et cliquez sur "Inspecteur de schéma".
Dans la fenêtre résultante, vous avez un certain nombre d'onglets. Le premier onglet "Info" affiche une estimation approximative de la taille de la base de données en Mo.
Le deuxième onglet, "Tables", affiche la longueur des données et d'autres détails pour chaque table.
la source
Taille de toutes les tables:
Supposons que votre base de données ou votre
TABLE_SCHEMA
nom soit "news_alert". Ensuite, cette requête affichera la taille de toutes les tables de la base de données.Production:
Pour le tableau spécifique:
Supposons que votre
TABLE_NAME
est - « nouvelles » . Ensuite, la requête SQL sera-Production:
la source
Essayez la commande shell suivante (remplacez-la
DB_NAME
par le nom de votre base de données):Pour la solution Drupal / drush, consultez l'exemple de script suivant qui affichera les plus grandes tables utilisées:
la source
Voici une autre façon de résoudre ce problème en utilisant la ligne de commande bash.
for i in
mysql -NB -e 'show databases'
; do echo $i; mysql -e "SELECT table_name AS 'Tables', round(((data_length+index_length)/1024/1024),2) 'Size in MB' FROM information_schema.TABLES WHERE table_schema =\"$i\" ORDER BY (data_length + index_length) DESC" ; donela source
Si vous utilisez phpmyadmin, allez simplement dans la structure du tableau
par exemple
la source
Adapté de la réponse de ChapMic pour répondre à mon besoin particulier.
Spécifiez uniquement le nom de votre base de données, puis triez toutes les tables dans l'ordre décroissant - de la PLUS GRANDE à la PLUS PETITE table de la base de données sélectionnée. Ne nécessite qu'une seule variable à remplacer = le nom de votre base de données.
la source
Si vous y avez
ssh
accès, vous voudrez peut-être simplement essayerdu -hc /var/lib/mysql
(ou différentdatadir
, comme défini dans votremy.cnf
) également.la source
Une autre façon de montrer le nombre de rangées et d'espace occupé et de les classer.
La seule chaîne que vous devez remplacer dans cette requête est "yourDatabaseName".
la source
Je trouve que les réponses existantes ne donnent pas réellement la taille des tables sur le disque, ce qui est plus utile. Cette requête donne une estimation de disque plus précise par rapport à la taille de la table basée sur data_length & index. J'ai dû l'utiliser pour une instance AWS RDS où vous ne pouvez pas examiner physiquement le disque et vérifier la taille des fichiers.
la source
Calculez la taille totale de la base de données à la fin:
la source
les 2 ci-dessus sont testés sur mysql
la source
Cela devrait être testé dans mysql, pas postgresql:
la source