Dans l'entreprise où je travaille, nous offrons des forfaits d'hébergement dont le prix varie en fonction de l'espace disque utilisé et de la taille de la base de données. La définition du forfait de chaque client est entré dans un outil de gestion qui est lui-même relié à la facturation. Au niveau de la base de données, l'idée était de pouvoir faire le pont entre l'espace disque actuellement occupé et la taille maximale autorisée en utilisant des fonctions système incluses dans PostgreSQL. Lorsque le quota est sur le point d'être atteint, le département de service à la clientèle peut en être informé automatiquement et effectuer un suivi avec le client pour une réévaluation de ses besoins.
Pour obtenir l'espace occupé par une base de données, on peut exécuter la commande SQL suivante :
-- Taille d'une base de données en bytes (bigint : 4472412)
SELECT pg_database_size('database_name') as database_size;
En combinaison avec la fonction pg_size_pretty, on pourra formatter la taille d'un objet de façon plus lisible :
-- Taille d'une base de données en format lisible (texte, avec unité de mesure : 4368 kB)
SELECT pg_size_pretty(pg_database_size('database_name')) as database_size;
Côté pratique, on peut aussi obtenir la taille de d'autres objets de la BD en utilisant pg_relation_size :
-- Espace occupé par une table
SELECT pg_size_pretty(pg_relation_size('public.my_table')) as table_size;
-- Espace occupé par une séquence
SELECT pg_size_pretty(pg_relation_size('public.my_table_pk_seq')) as sequence_size;
Pour tous ces appels, on peut passer comme argument le nom de l'objet ou l'oid (object identifier) puisqu'il y a une surcharge des méthodes à l'interne (overloading).
samedi 15 novembre 2008
0 réponse à "Connaître la taille d'un objet PostgreSQL"
S'abonner à :
Publier des commentaires (Atom)