jeudi 13 septembre 2012

Informations métriques sur une DB PostgreSql

Voici comment obtenir toute une série d'information utile concernant une ou plusieurs bases de donnée installée sur un serveur PostgreSql

Taille des DB
Taille de toutes les bases de données sur le serveur
select datname,pg_database_size(datname) from pg_database
mais aussi l'espace utilisé par les bases de données
select sum(pg_database_size(datname)) from pg_database

Les tables
Nbre de tables dans une DB
Cette requête est idéale pour évaluer la complexité d'une base de données
select count(*) as TableCount 
from information_schema.tables 
where table_schema not in ('information_schema', 'pg_catalog')

Lister les tables d'une DB
select table_schema, table_name 
from information_schema.tables 
where table_schema not in ('information_schema', 'pg_catalog')

Taille des tables d'une DB
select table_schema, table_name, pg_relation_size('"'||table_name||'"')
from information_schema.tables 
where table_schema not in ('information_schema', 'pg_catalog')

Pourquoi la notation bizarre '"'||table_name||'"' ?
Hé bien parce que j'ai eu la malheur de définir une table avec un lettre capitale (Counters).
Ainsi, l'instruction select pg_relation_size('Counters') m'indique que la table counters n'existe pas.
Par contre, l'intruction select pg_relation_size('"Counters"') retourne le résultat attendu.

Voici une petite version améliorée qui affiche la taille en Ko
select table_schema, table_name, pg_relation_size('"'||table_name||'"')/1024 as Table_size_Kb
from information_schema.tables 
where table_schema not in ('information_schema', 'pg_catalog')

Aucun commentaire: