web-dev-qa-db-fra.com

Comment obtenir la vraie taille de la base de données MySQL?

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
  • les chiffres sont arrondis.

Donc ai-je 362000 ou 400 * 362000 = 144800000 octets de données pour cette table? Et que signifie longueur d'index? Merci!

132
marvin

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; 
267
ron_dobley

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>"
92
minhas23

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:

phpMyAdmin screenshot

Cela va probablement perdre un peu de précision à mesure que les tailles augmentent, mais cela devrait être assez précis pour vos besoins.

29
Radu Murzea

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; 
8
jakson

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/

3
MiGro

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

0
ofrommel

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'
0
Semra

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.

  1. Clic droit sur le schéma
  2. Sélectionnez l'option Inspecteur de schéma

     enter image description here

  3. Il montre tous les détails de la taille du schéma 

  4. Sélectionnez l'onglet Tables pour voir la taille de chaque table.

     enter image description here

  5. La taille de la table est affichée dans la colonne Longueur de données

0
Viraj Dhamal

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;
0
Arbab Nazar

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 .

0
Rick James