Comment obtenir la taille de la base de données mysql?

542

Comment obtenir la taille d'une base de données mysql?
Supposons que la base de données cible soit appelée "v3".

Débutant
la source
Pour une taille de table / base de données spécifique, le script fourni ici vous aidera, les informations sont calculées à partir de la table information_schema.tables, voir la réponse détaillée ici rathishkumar.in/2017/12/…
Rathish

Réponses:

1185

Exécutez cette requête et vous obtiendrez probablement ce que vous recherchez:

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; 

Cette requête provient des forums mysql , où des instructions plus complètes sont disponibles.

Brian Willis
la source
4
Même après avoir supprimé la plupart des données des tables de la base de données, la taille reste la même
Vidz
2
@Vidz utilisez-vous le moteur InnoDB. Si vous le faites, vous pouvez libérer de l'espace sauf si vous utilisez file_per_table et modifiez les tables.
mandza
5
Veuillez garder à l'esprit que cette méthode ne retournera aucune des bases de données complètement vides, au moins une seule table doit exister pour que la base de données apparaisse dans le résultat.
v010dya
13
Pour sélectionner dans une base de données unique, ajoutez ceci entre la ligne FROMet GROUP: where table_schema='DATABASE_NAME'- en remplaçant DATABASE_NAMEpar votre base de données.
Prix ​​KJ
2
Remarque: MySQL Workbench va cracher un Syntax error: {column title} (double quoted text) is not valid input here. erreur. Les titres des colonnes doivent être entourés de graduations. C'est à dire Database Name.
KareemElashmawy
75

Il peut être déterminé en utilisant la commande MySQL suivante

SELECT table_schema AS "Database", SUM(data_length + index_length) / 1024 / 1024 AS "Size (MB)" FROM information_schema.TABLES GROUP BY table_schema

Résultat

Database    Size (MB)
db1         11.75678253
db2         9.53125000
test        50.78547382

Obtenez le résultat en GB

SELECT table_schema AS "Database", SUM(data_length + index_length) / 1024 / 1024 / 1024 AS "Size (GB)" FROM information_schema.TABLES GROUP BY table_schema
Nadeem0035
la source
2
Agréable. J'aime cette réponse.
progfan
31

Alternativement, si vous utilisez phpMyAdmin , vous pouvez consulter la somme des tailles de table dans le pied de page de l' structureonglet de votre base de données . La taille réelle de la base de données peut être légèrement supérieure à cette taille, mais elle semble cohérente avec la table_schemaméthode mentionnée ci-dessus.

Capture d'écran :

entrez la description de l'image ici

Joel
la source
26

Alternativement, vous pouvez directement sauter dans le répertoire de données et vérifier la taille combinée de v3.myd, v3. myi et v3. fichiers frm (pour myisam) ou v3.idb & v3.frm (pour innodb).


la source
7
Remarque: les fichiers ibd n'existent que si vous utilisez innodb_file_per_table
Slashterix
2
Cette réponse est très spécifique au moteur de stockage. La réponse de @ brian-willis est plus appropriée.
Manu Manjunath
15

Pour obtenir un résultat en Mo:

SELECT
SUM(ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024), 2)) AS "SIZE IN MB"
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = "SCHEMA-NAME";

Pour obtenir un résultat en Go:

SELECT
SUM(ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024 / 1024), 2)) AS "SIZE IN GB"
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = "SCHEMA-NAME";
williambarau
la source
12
mysqldiskusage  --server=root:MyPassword@localhost  pics

+----------+----------------+
| db_name  |         total  |
+----------+----------------+
| pics     | 1,179,131,029  |
+----------+----------------+

S'il n'est pas installé, cela peut être installé en installant le mysql-utilspackage qui devrait être conditionné par la plupart des distributions principales.

Rick James
la source
4

Première connexion à MySQL en utilisant

mysql -u username -p

Commande pour afficher la taille d'une seule base de données avec sa table en Mo.

SELECT table_name AS "Table",
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size (MB)"
FROM information_schema.TABLES
WHERE table_schema = "database_name"
ORDER BY (data_length + index_length) DESC;

Changez database_name en votre base de données

Commande pour afficher toutes les bases de données avec sa taille en Mo.

SELECT table_schema AS "Database", 
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)" 
FROM information_schema.TABLES 
GROUP BY table_schema;
Hiren Parghi
la source
1

Allez dans le répertoire de données mysql et exécutez du -h --max-depth=1 | grep databasename

Evan Haston
la source