Je voudrais savoir combien d’espace ma base de données MySQL utilise, afin de sélectionner un hôte Web . J'ai trouvé la commande SHOW TABLE STATUS LIKE 'table_name'
. Ainsi, lorsque je pose la requête, j’obtiens un résultat du type:
Name | Rows | Avg. Row Length | Data_Length | Index Length
---------- ---- --------------- ----------- ------------
table_name 400 55 362000 66560
Donc ai-je 362000 ou 400 * 362000 = 144800000 octets de données pour cette table? Et que signifie longueur d'index? Merci!
De S. Prakash, trouvé sur le forum MySQL :
SELECT table_schema "database name",
sum( data_length + index_length ) / 1024 / 1024 "database size in MB",
sum( data_free )/ 1024 / 1024 "free space in MB"
FROM information_schema.TABLES
GROUP BY table_schema;
Ou en une seule ligne pour un copier-coller plus facile:
SELECT table_schema "database name", sum( data_length + index_length ) / 1024 / 1024 "database size in MB", sum( data_free )/ 1024 / 1024 "free space in MB" FROM information_schema.TABLES GROUP BY table_schema;
Vous pouvez obtenir la taille de votre base de données Mysql en exécutant la commande suivante dans le client Mysql
SELECT sum(round(((data_length + index_length) / 1024 / 1024 / 1024), 2)) as "Size in GB"
FROM information_schema.TABLES
WHERE table_schema = "<database_name>"
Si vous utilisez phpMyAdmin, il peut vous donner cette information.
Allez simplement dans "Bases de données" (menu en haut) et cliquez sur "Activer les statistiques".
Vous verrez quelque chose comme ça:
Cela va probablement perdre un peu de précision à mesure que les tailles augmentent, mais cela devrait être assez précis pour vos besoins.
si vous voulez le trouver au MB faites-le
SELECT table_schema "DB Name",
Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB"
FROM information_schema.tables
GROUP BY table_schema;
Il existe essentiellement deux méthodes: base de données de requête .__ (longueur de données + longueur d’index) ou vérification de la taille des fichiers. La longueur de l'index est liée aux données stockées dans les index.
Tout est décrit ici:
http://www.mkyong.com/mysql/how-to-calculate-the-mysql-database-size/
MySQL Utilities d’Oracle utilise une commande appelée mysqldiskusage qui affiche l’utilisation du disque de chaque base de données: https://dev.mysql.com/doc/mysql-utilities/1.6/en/mysqldiskusage.html
Aucune des réponses ne comprend la taille des frais généraux et la taille des métadonnées des tableaux.
Voici une estimation plus précise de "l'espace disque" alloué par une base de données.
SELECT ROUND((SUM(data_length+index_length+data_free) + (COUNT(*) * 300 * 1024))/1048576+150, 2) AS MegaBytes FROM information_schema.TABLES WHERE table_schema = 'DATABASE-NAME'
Si vous utilisez MySql Workbench, il est très facile d'obtenir tous les détails sur la taille de la base de données, la taille de chaque table, la taille de l'index, etc.
Si vous voulez trouver la taille de toutes les bases de données MySQL, utilisez cette commande, elle montrera leurs tailles respectives en mégaoctets;
SELECT table_schema "database", sum(data_length + index_length)/1024/1024 "size in MB" FROM information_schema.TABLES GROUP BY table_schema;
Si vous avez des bases de données volumineuses, vous pouvez utiliser la commande suivante pour afficher le résultat en gigaoctets.
SELECT table_schema "database", sum(data_length + index_length)/1024/1024/1024 "size in GB" FROM information_schema.TABLES GROUP BY table_schema;
Si vous souhaitez afficher uniquement la taille d'une base de données spécifique, par exemple YOUR_DATABASE_NAME
, vous pouvez utiliser la requête suivante;
SELECT table_schema "database", sum(data_length + index_length)/1024/1024/1024 "size in GB" FROM information_schema.TABLES WHERE table_schema='YOUR_DATABASE_NAME' GROUP BY table_schema;
SUM(Data_free)
peut ou peut ne pas être valide. Cela dépend de l'historique de innodb_file_per_table
. On trouve plus de discussion ici .