[MySQL] Connaître la taille des tables et bases de données

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.

Logo MySQL

Logo MySQL

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.

Ce contenu a été publié dans Astuces.

A propos de l'auteur : Tony Archambeau

Fort de plusieurs années d’expérience dans le développement web, Tony partage ses connaissances sur des projets divers dont le site infowebmaster.fr.
Il est possible de le suivre sur Twitter.

Partager

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *