Connaitre les plus grosses tables d'une base de données MySQL/MariaDB et leur taille

Connaitre les plus grosses tables d'une base de données MySQL/MariaDB et leur taille

par Séverin Terrier,
Nombre de réponses : 2
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Bonjour,

Au fil de mes lectures du jour, je suis tombé sur une requête permettant de connaitre les plus grosses tables d'une base de données.

Je l'ai donc légèrement retouchée, pour améliorer sa lisibilité, et francisée :

SELECT CONCAT(table_schema, '.', table_name)                                        AS 'Base et Table'
     , CONCAT(ROUND(table_rows / 1000000, 2), ' M') AS 'Lignes'
     , CONCAT(ROUND(data_length / (1024 * 1024 * 1024), 2), ' Go') AS 'Données'
     , CONCAT(ROUND(index_length / (1024 * 1024 * 1024), 2), ' Go') AS 'Index'
     , CONCAT(ROUND((data_length + index_length) / (1024 * 1024 * 1024), 2), ' Go') AS 'Total'
     , ROUND(index_length / data_length, 2) AS 'idxfrac'
FROM information_schema.TABLES
ORDER BY data_length + index_length DESC
LIMIT 10;

Cela peut être utile pour connaitre les plus grosses tables, et estimer la place totale utilisée.

Séverin

Moyenne des évaluations Utile (7)
En réponse à Séverin Terrier

Re: Connaitre la taille d'une base de données MySQL/MariaDB

par Séverin Terrier,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Bonjour,

Et en complément, pour connaitre la taille globale d'une base de données, je reprends cette information, francisée et plus lisible :

SELECT engine                                                                AS 'Moteur'
, COUNT(*) AS 'Tables'
, CONCAT(ROUND(SUM(table_rows) /1000000 ,2),' M') AS 'Lignes'
, CONCAT(ROUND(SUM(data_length) /(1024*1024*1024),2),' Go') AS 'Données'
, CONCAT(ROUND(SUM(index_length) /(1024*1024*1024),2),' Go') AS 'Index'
, CONCAT(ROUND(SUM(data_length+index_length)/(1024*1024*1024),2),' Go') AS 'Total'
, ROUND(SUM(index_length) /SUM(data_length),2) AS 'IdxFrac'
FROM information_schema.TABLES
WHERE table_schema NOT IN ('mysql', 'performance_schema', 'information_schema')
GROUP BY engine
ORDER BY SUM(data_length+index_length) DESC
LIMIT 10;

Séverin

Moyenne des évaluations Utile (1)