Connaître avec précision la taille d’une base de données ou des tables d’un base peut être très intéressant pour les utilisateurs de MySQL. Cet article présente plusieurs requêtes SQL à exécuter, soit dans une application, en ligne de commande ou directement dans l’interface de PhpMyAdmin pour connaître la taille des bases de données ou des tables.
Information : se connecter à MySQL en ligne de commande
Pour se connecter à MySQL en ligne de commande sous linux il est possible d’ouvrir un terminal et d’exécuter la commande suivante :
$ mysql -u [nom utilisateur] -p
Une fois cette commande exécutée il faut remplir le mot de passe pour se connecter.
Il est ensuite possible de se connecter à une base de données en utilisant la requête suivante :
$ user [nom base de données];
Taille des bases de données
La requête suivante permet de lister toutes les bases de données et de calculer la taille de chacune d’elles en Mo.
SELECT table_schema AS NomBaseDeDonnees, ROUND(SUM( data_length + index_length ) / 1024 / 1024, 2) AS BaseDonneesMo FROM information_schema.TABLES GROUP BY TABLE_SCHEMA;
Il est également possible de visualiser en détail la taille d’une base de données spécifiquement. La requête ci-dessous présente la taille d’une base en Mo, en Ko et aussi en octets. Il faut juste adapter la requête en remplaçant “nom_base_de_donnees” par la base de votre choix.
SELECT CONCAT( SUM(ROUND( ( (DATA_LENGTH + INDEX_LENGTH - DATA_FREE) / 1024 / 1024),2)), 'Mo' ) AS TailleMo, CONCAT( SUM(ROUND( ( (DATA_LENGTH + INDEX_LENGTH - DATA_FREE) / 1024 ),2)), 'Ko' ) AS TailleKo, CONCAT( SUM(ROUND( ( (DATA_LENGTH + INDEX_LENGTH - DATA_FREE) ),2)), 'o' ) AS Tailleo FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'nom_base_de_donnees';
Taille des tables d’une base de données
Pour connaître la taille de chaque table inclus dans une base il est possible d’exécuter la requête ci-dessous :
SELECT TABLE_NAME, CONCAT(ROUND(((DATA_LENGTH + INDEX_LENGTH - DATA_FREE) / 1024 / 1024), 2), 'Mo') AS TailleMo FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'nom_base_de_donnees'
Pour connaître uniquement la taille d’une table SQL il est possible d’exécuter la requête suivante :
SELECT CONCAT(ROUND(((DATA_LENGTH + INDEX_LENGTH - DATA_FREE) / 1024 / 1024), 2), 'Mo') AS TailleMo FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'nom_base_de_donnees' AND TABLE_NAME = 'nom_table';
Intérêts de ces requêtes
Ces requêtes SQL peuvent être utiles pour savoir si une base de données ou une table devient trop grande. Il pourrait par exemple être possible de créer une interface web qui affiche le poids de vos tables et qui pourrait même envoyer une alerte dès qu’une table devient trop grosse. Cela permet de mieux se rendre compte de l’espace occupé par les données et ainsi supprimer des données si une base devient trop volumineuse.