PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

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

#1 08/07/2011 09:07:09

arthurr
Membre

pg_temp et pg_toast_temp

Bonjour,

Je viens de remarquer qu'un de mes cluster génère une grande quantité de pg_toast_temp et de pg_temp.
J'ai loggé les DDL pour surveiller la création des tables temporaires. Un soft seulement utilise des tables temporaires, il se connecte toutes les minutes, créé une TEMP TABLE, travaille, et se déconnecte (sans dropper la table temporaire mais ca ne doit pas poser de soucis).

en psql :

arthurr=# \dn
        List of schemas
        Name        |  Owner   
--------------------+----------
 information_schema | postgres
 pg_catalog         | postgres
 pg_toast           | postgres
 pg_toast_temp_10   | postgres
 pg_toast_temp_14   | postgres
 pg_toast_temp_16   | postgres
 pg_toast_temp_17   | postgres
 pg_toast_temp_18   | postgres
 pg_toast_temp_19   | postgres
 pg_toast_temp_20   | postgres
 pg_toast_temp_21   | postgres
 pg_toast_temp_22   | postgres
 pg_toast_temp_23   | postgres
 pg_toast_temp_24   | postgres
 pg_toast_temp_25   | postgres
 pg_toast_temp_26   | postgres
 pg_toast_temp_27   | postgres
 pg_toast_temp_28   | postgres
 pg_toast_temp_29   | postgres
 pg_toast_temp_30   | postgres
 pg_toast_temp_31   | postgres
 pg_toast_temp_33   | postgres
 pg_toast_temp_34   | postgres
 pg_toast_temp_35   | postgres
 pg_toast_temp_37   | postgres
 pg_toast_temp_4    | postgres
 pg_toast_temp_44   | postgres
 pg_toast_temp_5    | postgres
 public             | postgres
(29 rows)
arthurr=# select * from pg_tables where tablename like 'pg_temp%';
 schemaname | tablename | tableowner | tablespace | hasindexes | hasrules | hastriggers 
------------+-----------+------------+------------+------------+----------+-------------
(0 rows)
arthurr=# select * from pg_namespace where nspname like 'pg%temp%';
     nspname      | nspowner | nspacl 
------------------+----------+--------
 pg_temp_1        |       10 | 
 pg_toast_temp_20 |       10 | 
 pg_temp_33       |       10 | 
 pg_toast_temp_14 |       10 | 
 pg_temp_35       |       10 | 
 pg_temp_28       |       10 | 
 pg_toast_temp_17 |       10 | 
 pg_temp_30       |       10 | 
 pg_toast_temp_24 |       10 | 
 pg_temp_12       |       10 | 
 pg_toast_temp_35 |       10 | 
 pg_temp_11       |       10 | 
 pg_toast_temp_26 |       10 | 
 pg_temp_16       |       10 | 
 pg_toast_temp_31 |       10 | 
...
...
 pg_temp_100      |       10 | 
 pg_temp_110      |       10 | 
 pg_toast_temp_18 |       10 | 
(131 rows)

Après avoir fouillé sur notre ami google, j'ai trouvé des réponses du genre "Ignore them." (© Tom Lane), mais je trouve ça étrange car je n'avais pas  ce comportement avant ...

Qq'un a une explication afin que je puisse dormir tranquillement ?

Merci.

Hors ligne

#2 08/07/2011 09:33:54

gleu
Administrateur

Re : pg_temp et pg_toast_temp

il se connecte toutes les minutes, créé une TEMP TABLE, travaille, et se déconnecte (sans dropper la table temporaire mais ca ne doit pas poser de soucis

C'est l'un des intérêts des tables temporaires. À la fin d'une session, les tables temporaires de cette sesson sont supprimées.


Guillaume.

Hors ligne

#3 08/07/2011 09:36:03

gleu
Administrateur

Re : pg_temp et pg_toast_temp

Tom a raison (comme très fréquemment).

À chaque fois qu'une session va utiliser des tables temporaires, un schéma temporaire va lui être associé pour la table elle-même et un autre pour la table fille. Rien d'alarmant du tout, c'est juste l'implémentation de PostgreSQL qui est ainsi.

(désolé pour les deux messages qui n'auraient dû en être qu'un seul... j'ai cliqué trop rapidement sur Envoyer)


Guillaume.

Hors ligne

#4 08/07/2011 09:42:07

arthurr
Membre

Re : pg_temp et pg_toast_temp

Merci pour ta réponse.

Je ne remets pas en cause Tom Lane (je ne veux pas avoir de problème ! wink ).

Ce que je trouve surprenant, c'est que le ménage ne soit pas fait dans les schémas et les tables (alors que les sessions ayant fait les tables temporaires sont finies) et que j'ai l'impression que c’était fait avant (peut être une mauvaise impression mais vu la quantité de schémas / tables temporaires qui trainent, je ne vois comment j'ai pu ne pas les remarquer avant)

Hors ligne

#5 08/07/2011 09:43:20

arthurr
Membre

Re : pg_temp et pg_toast_temp

je double-post aussi :
ce n'ai pas les tables temporaires qui restent, mais les pg_temp_*

Hors ligne

#6 08/07/2011 10:33:35

gleu
Administrateur

Re : pg_temp et pg_toast_temp

Les schémas contenant les tables temporaires finissent aussi par disparaître. Par contre, j'avoue ne pas connaître plus exactement le mécanisme.


Guillaume.

Hors ligne

#7 08/07/2011 10:42:01

arthurr
Membre

Re : pg_temp et pg_toast_temp

Dans tous les cas, merci  pour ta réponse.
Je vais essayer de trouver plus d'infos, et si je trouve qq chose, je transmets sur le forum.

Hors ligne

#8 10/07/2011 01:14:48

cedric
Membre

Re : pg_temp et pg_toast_temp

arthurr a écrit :

et que j'ai l'impression que c’était fait avant (peut être une mauvaise impression mais vu la quantité de schémas / tables temporaires qui trainent, je ne vois comment j'ai pu ne pas les remarquer avant)

Quelque chose a changé qui puisse expliquer ce (probable) changement ? (MAJ postgresql, changement dans votre appli, utilisation de pooler de connexion...)


Cédric Villemain +33 (0)6 20 30 22 52
http://2ndQuadrant.fr/
PostgreSQL: Support 24x7 - Développement, Expertise et Formation

Hors ligne

#9 11/07/2011 14:10:11

arthurr
Membre

Re : pg_temp et pg_toast_temp

cedric a écrit :

Quelque chose a changé qui puisse expliquer ce (probable) changement ? (MAJ postgresql, changement dans votre appli, utilisation de pooler de connexion...)

A part la mise en place d'un Warm standby : rien de spécial ...

Hors ligne

Pied de page des forums