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 02/09/2011 16:12:56

titi38
Membre

Pb : disque plein !

Bonjour,

J'ai écris un bout de logiciel pour insérer des lignes dans une table (j'utilise la commande "copy from stdin"). La table est définie comme ci dessous:

CREATE TABLE dataflow
(
num_id_cycle int4,
ipproto int2,
ipLocal inet NOT NULL,
direction char,
ipExtern inet NOT NULL,
portLocal int4,
portExtern int4,
tcpFlags smallint,
incTraffic int8,
outTraffic int8,
incPkts int8,
outPkts int8,
firstTimestamp TIMESTAMP WITHOUT TIME ZONE,
lastTimestamp TIMESTAMP WITHOUT TIME ZONE,
ipoutsideCountryId int2,

PRIMARY KEY (num_id_cycle,ipLocal,ipExtern,ipproto,portLocal,portExtern),
constraint fk_num_cycle FOREIGN KEY (num_id_cycle) REFERENCES collect_cycle (num_id_cycle)
);

Mon programme insère plusieurs milliers de ligne chaque 1/4 d'heure; et toutes les 24 heures, il fait le ménage:

DELETE FROM dataflow WHERE num_id_cycle < xy;
-- where xy is the num_id_cycle of 24hours old data;

VACUUM ANALYZE dataflow

Ainsi, il y a toujours moins de 24heures de données dans la base de données.
Cependant, le disque se remplit, et régulièrement, au bout de 2 ou 3 mois, le serveur postgresql se plante car le disque est plein !

Pourquoi est-ce que le taille sur le disque augmente (alors que le nombre d'entrée dans la table n'augmente pas) ?

Merci d'avance pour votre aide et vos conseils. Amicalement
Thierry

Hors ligne

#2 02/09/2011 17:31:32

gleu
Administrateur

Re : Pb : disque plein !

Un DELETE ne supprime pas réellement la ligne. Il ne fait que la flagguer comme supprimé. De même, le VACUUM ANALYZE ne la supprime pas non plus physiquement. Il la flaggue comme étant réutilisable... à condition qu'il n'y a pas une transaction qui l'en empêche. Mon impression est que vous avez des transactions longues qui empêchent le VACUUM ANALYZE de fonctionner avec une efficacité complète.


Guillaume.

Hors ligne

#3 02/09/2011 18:02:37

titi38
Membre

Re : Pb : disque plein !

Bonjour,

Non, il n'y a aucune transaction longue !

Est-ce qu'il faut faire un :
REINDEX INDEX dataflow_pkey
après le VACUUM ANALYZE ??

Merci.
T.

Hors ligne

#4 02/09/2011 18:07:13

gleu
Administrateur

Re : Pb : disque plein !

Si le VACUUM n'est fait que sur la table et si l'autovacuum est désactivé, en effet, l'index peut grossir assez rapidement. Un REINDEX peut améliorer les choses. Attention que tout accès en écriture sur la table est refusé pendant le REINDEX.


Guillaume.

Hors ligne

Pied de page des forums