PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

Trouver facilement la taille d'une table, de ses index et son nombre de tuples

| Trouver facilement la taille d'une table, de ses index et son nombre de tuples

Par Jean-Paul Argudo le 06/02/2007 - 15:49

On a besoin parfois d'avoir rapidement la taille sur disque d'une table et le nombre d'enregistrements qu'elle contient. Pour cela, on peut utiliser la fonction pg_total_relation_size('nom de table') qui permet de rapatrier la taille totale de la table sur disque, index inclus. Si on ne veut pas connaître la taille prise par les index, il suffit d'utiliser la fonction pg_relation_size('nom de table'). La soustraction des deux permet de connaître la taille des index!

Tout cela nous permet de réaliser une vue fort sympathique pour l'administrateur de base de données. Attention à lancer un ANALYZE avant tout requêtage de cette vue:

drop view vue_stats;

create view vue_stats as
SELECT
c.relname as nom,
c.reltuples::bigint as tuples,
pg_total_relation_size(c.relname) as volume_total,
pg_relation_size(c.relname) as volume_donnees,
pg_total_relation_size(c.relname)-pg_relation_size(c.relname) as volume_index
FROM pg_catalog.pg_class c
JOIN pg_catalog.pg_roles r ON r.oid = c.relowner
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind = 'r'
AND n.nspname NOT IN ('pg_catalog', 'pg_toast')
AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;

Merci à klando (Cédric) pour cet ajout, fort sympathique: il permet d'avoir les tailles des objets lisibles sous la forme humaine:


drop view vue_stats_pretty ;

create view vue_stats_pretty as
SELECT
nom,
tuples,
pg_size_pretty(volume_total) as volume_total,
pg_size_pretty(volume_donnees) as volume_donnees,
pg_size_pretty(volume_index) as volume_index
FROM vue_stats;


Enjoy!

--
Jean-Paul ARGUDO
http://dalibo.com | http://dalibo.org

© PostgreSQLFr, tous droits réservés.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.