Le site Web "Comment calculer la taille de la base de données MySQL" donne deux requêtes:
Déterminer les tailles de toutes les bases de données
SELECT table_schema "Data Base Name", SUM( data_length + index_length) / 1024 / 1024
"Data Base Size in MB" FROM information_schema.TABLES GROUP BY table_schema ;
Déterminer la taille de toutes les tables d'une base de données
SELECT TABLE_NAME, table_rows, data_length, index_length,
round(((data_length + index_length) / 1024 / 1024),2) "Size in MB"
FROM information_schema.TABLES WHERE table_schema = "schema_name";
La première requête fonctionne correctement, mais la deuxième requête ne produit pas de jeu de résultats. Il montre simplement les noms des champs sans aucune ligne. Comment puis-je modifier la 2e requête pour afficher correctement la taille des tailles de mes tables dans ma base de données.
Remplacer "schema_name"
avec le nom de l'une de vos bases de données.
Et tilisez des guillemets simples pour les littéraux de chaîne , pas des guillemets doubles.
Ce fut un fil utile. Cette légère variation sur la deuxième recette de l'OP renvoie uniquement les tables (pas de vues) et ordonne le jeu de données retourné par taille de table --- du plus grand au plus petit:
MySQL :
SELECT
TABLE_NAME, table_rows, data_length, index_length,
round(((data_length + index_length) / 1024 / 1024),2) 'Size in MB'
FROM information_schema.TABLES
WHERE table_schema = 'yourSchemaName' and TABLE_TYPE='BASE TABLE'
ORDER BY data_length DESC;
PostGRES : Je devais faire la même chose dans PostGRES aujourd'hui, et emprunter de l'aide à cette réponse (et une autre que je perdu après avoir fermé l'onglet du navigateur), c'est ce que je me suis retrouvé. L'ajouter ici au cas où cela serait utile pour quelqu'un d'autre.
SELECT
t.tbl table_name,
ct.reltuples row_count,
pg_total_relation_size(t.tbl) size,
pg_size_pretty(pg_total_relation_size(t.tbl)) pretty_size
FROM (
SELECT
table_name tbl
FROM information_schema.tables
WHERE
table_schema = 'public'
AND table_type = 'BASE TABLE'
) t
join (
SELECT
relname, reltuples
FROM pg_class C
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
WHERE
nspname NOT IN ('pg_catalog', 'information_schema')
AND relkind='r'
) ct
on t.tbl = ct.relname
order by size desc ;
Je pense que c'est mieux .. http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html
show table status from database;
Voici une requête que j'utilise pour donner la taille de chaque table dans une base de données.
SELECT CASE WHEN (GROUPING(sob.name)=1) THEN 'All_Tables'
ELSE ISNULL(sob.name, 'unknown') END AS Table_name,
SUM(sys.length) AS Byte_Length
FROM sysobjects sob, syscolumns sys
WHERE sob.xtype='u' AND sys.id=sob.id
GROUP BY sob.name
WITH CUBE