Lister la taille des tables ventilée en heap / index / TOAST, et les plus gros index
PostgreSQLStockageCommande
SELECT n.nspname AS schema_name,
c.relname AS table_name,
pg_size_pretty(pg_total_relation_size(c.oid)) AS total,
pg_size_pretty(pg_relation_size(c.oid)) AS heap,
pg_size_pretty(pg_indexes_size(c.oid)) AS indexes,
pg_size_pretty(pg_total_relation_size(c.oid) - pg_relation_size(c.oid) - pg_indexes_size(c.oid)) AS toast_fsm_vm,
round(100.0 * pg_total_relation_size(c.oid) / NULLIF(pg_database_size(current_database()), 0), 1) AS pct_of_db
FROM pg_class c
JOIN pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r', 'm')
AND n.nspname NOT IN ('pg_catalog', 'information_schema')
ORDER BY pg_total_relation_size(c.oid) DESC
LIMIT 20;
-- Largest indexes and their usage counts
SELECT s.schemaname,
s.relname AS table_name,
s.indexrelname AS index_name,
pg_size_pretty(pg_relation_size(s.indexrelid)) AS index_size,
s.idx_scan,
i.indisunique,
i.indisprimary
FROM pg_stat_user_indexes s
JOIN pg_index i ON i.indexrelid = s.indexrelid
ORDER BY pg_relation_size(s.indexrelid) DESC
LIMIT 20;Ce que fait la commande
Affiche les plus grandes tables ventilées en total, heap, index et TOAST (+FSM/VM) avec leur part dans la base ; et les plus gros index avec leur nombre de parcours et les indicateurs unique/primary.
Quand l'utiliser
Pour trouver d'où vient la croissance (données, index ou TOAST) lorsque l'utilisation du disque augmente, et pour repérer les gros index inutilisés.
Attention
Les fonctions de taille accèdent au système de fichiers pour chaque relation et peuvent être lentes dans les bases comptant des dizaines de milliers de tables. Un parent partitionné (relkind 'p') pèse lui-même 0 octet et est exclu ; pour le total d'une hiérarchie : SELECT pg_size_pretty(sum(pg_total_relation_size(relid))) FROM pg_partition_tree('sales'); Les gros index avec idx_scan = 0 sont candidats à la suppression, mais les compteurs ne couvrent que la période depuis la dernière réinitialisation des statistiques et uniquement ce serveur (l'utilisation sur les répliques n'est pas visible) ; les index unique/primary imposent des contraintes et ne sont pas supprimés.