Vous n'êtes pas identifié(e).

#1 20/01/2011 14:58:32

droidaroue
Membre

lister les objets du cache postgres

Bonjour,

je cherche a afficher les objets dans le cache buffer de postgres mais j'arrive pas  a faire le lien entre le schema trouver ca database ???
ci joint mon debut de requete

SELECT nam.nspowner, nam.nspname, use.usename, rel.relname AS "Relation",
count(*) AS "Nb de tampons dans le cache"
FROM pg_buffercache AS buf, pg_class AS rel, pg_user AS use, pg_namespace nam
WHERE buf.relfilenode=rel.relfilenode
AND   rel.relowner = use.usesysid
AND   nam.oid = rel.relnamespace
GROUP BY nam.nspowner, nam.nspname, use.usename, rel.relname
ORDER BY count(*) DESC;

Merci pour votre aide.

Hors ligne

#2 20/01/2011 15:00:47

Marc Cousin
Membre

Re : lister les objets du cache postgres

Le schema est appelé 'namespace' dans les tables système.

Donc l'info est dans pg_class.relnamespace, à joindre avec pg_namespace.oid


Marc.

Hors ligne

#3 20/01/2011 15:24:29

droidaroue
Membre

Re : lister les objets du cache postgres

J'ai bien fait le lien :

SELECT nam.nspowner, nam.nspname, use.usename, rel.relname AS "Relation",
count(*) AS "Nb de tampons dans le cache"
FROM pg_buffercache AS buf, pg_class AS rel, pg_user AS use, pg_namespace nam
WHERE buf.relfilenode=rel.relfilenode
AND   rel.relowner = use.usesysid
AND   nam.oid = rel.relnamespace
GROUP BY nam.nspowner, nam.nspname, use.usename, rel.relname
ORDER BY count(*) DESC;

mais je cherche trouver le nom de la base qui heberge le schema, quel table fait le lien entre les schemas et les bases ?

Merci

Hors ligne

#4 20/01/2011 15:35:25

gleu
Administrateur

Re : lister les objets du cache postgres

Il n'y en a pas. À partir du moment où vous êtes connecté sur une base, vous ne voyez pas les objets des autres bases. Donc, si vous voyez des schémas, c'est qu'ils sont forcément de cette base. Autrement dit, vous ne devez pas faire une jointure "normale", mais un LEFT JOIN.


Guillaume.

Hors ligne

#5 20/01/2011 16:24:53

droidaroue
Membre

Re : lister les objets du cache postgres

Mais avec postgres on ce connecte forcement a une base non ?
Il y a effectivement quelque chose que j'ai pas compris :
Quand je veux des infos géneral a l'instance ou doit je les chercher ? dans la base postgres ?
Les buffers de cache sont rempli d'objet de tous les schemas...

Merci de vos lumières :rolleyes

Hors ligne

#6 20/01/2011 17:19:40

gleu
Administrateur

Re : lister les objets du cache postgres

Avec PostgreSQL, on se connecte forcément à une base. pg_buffercache vous fournira des informations sur le contenu de la cache mais il ne pourra pas faire le lien entre l'identifiant et le nom d'une table ou d'un index pour les bases où vous n'êtes pas connecté.


Guillaume.

Hors ligne

Pied de page des forums