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 19/09/2022 06:43:45

Geo-x
Membre

Relation VACUUM et REINDEX

Bonjour à tous,

J'ai une question toutes simple à la quelle je ne trouve pas forcément de réponse.

Sur une table contenant plusieurs centaine de milliers d'enregistrements, mis à jour quotidiennement en nombre (plusieurs dizaine de milliers) il me semble indispensable de mettre en place un AUTO VACUUM quotidien.
Ma question porte sur la ré indexation.
Etant donné que l'AUTO VACUUM va nettoyer les lignes cachés, j'imagine que ces lignes étaient indexées.
De fait, est-il nécessaire de lancer une réindexation à chaque VACUUM (auto ou pas) réalisé ?

Merci.

Geo-x

Hors ligne

#2 19/09/2022 11:25:36

rjuju
Administrateur

Re : Relation VACUUM et REINDEX

Bonjour,


Par définition autovacuum est le contraire d'une planification manuelle d'un vacuum.


La meilleure chose à faire est normalement de configurer autovacuum pour la ou les tables afin qu'autovacuum la traite avec une fréquence suffisamment importante.  De plus, avez-vous constaté une baisse de performance sur les requêtes utilisant cette table, ou une augmentation significative du bloat et/ou de la volumétrie ?


Pour finir, il n'est généralement pas nécessaire de faire un REINDEX, pour peu que l'autovacuum soit correctement configuré.

Hors ligne

#3 19/09/2022 15:30:24

Geo-x
Membre

Re : Relation VACUUM et REINDEX

C'est la même table que pour mon autre sujet en réalité :-) (https://forums.postgresql.fr/viewtopic. … 724#p33724)
Il n'y a pas forcément de grosses baisses de performances à ce stade, en revanche la volumétrie est conséquente (plusieurs dizaine de milliers d'enregistrements quotidiens)

Hors ligne

#4 20/09/2022 05:40:51

rjuju
Administrateur

Re : Relation VACUUM et REINDEX

Suivez-vous l'activité d'autovacuum sur cette table, notamment pg_stat_user_tables.last_autovacuum et last_autoanalyze?


plusieurs dizaine de milliers d'enregistrements quotidiens


S'agit-il de nouveaux enregistrements ou d'enregistrements modifiés ?  Ce n'est cependant à priori pas grand chose, à moins que chaque ligne fasse plusieurs centaines de Mo.

Hors ligne

#5 20/09/2022 08:56:02

Geo-x
Membre

Re : Relation VACUUM et REINDEX

Je n'ai pas encore mis en place l'AUTO VACUUM, c'était une question en amont :-)
Pour le moment je fais les VACUUM manuellement.
Sur les dizaine de milliers de nouveaux enregistrements, il s'agit d'un mix insertion/mises à jour, et non chaque ligne ne fait pas plusieurs centaines de Mo. Pour donner un ordre d'idée j'ai 495 000 enregistrements pour un poids total 29 Go soit environ 0,05 Mo / ligne.

Hors ligne

#6 20/09/2022 10:39:04

rjuju
Administrateur

Re : Relation VACUUM et REINDEX

Je n'ai pas encore mis en place l'AUTO VACUUM, c'était une question en amont :-)

L'autovacuum est actif par défaut depuis la version 8.3.  Êtes-vous en version 8.2 ou inférieur, ou avez-vous explicitement désactivé l'autovacuum ou vous voulez dire que l'autovacuum est actif, avec les réglages par défaut ?


j'ai 495 000 enregistrements pour un poids total 29 Go soit environ 0,05 Mo / ligne

Ce qui semble donc indiquer une absence de fragmentation hors de controle ?

Hors ligne

#7 20/09/2022 11:02:57

Geo-x
Membre

Re : Relation VACUUM et REINDEX

Ah d'accord, je ne savais pas, je suis actuellement en version : PostgreSQL 10.18 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-12), 64-bit

Comment puis-je savoir si l'autovacuum est activé ? Si dans PgAdmin je clique sur la base > Maintenance, je ne le vois pas activé.

Hors ligne

#8 20/09/2022 12:14:57

rjuju
Administrateur

Re : Relation VACUUM et REINDEX

Aucune idée de ce que fais pgAdmin.  Pour savoir si autovacuum est activé, il suffit d'exécuter la requête suivante :

SHOW autovacuum;

Si cela renvoie "on", c'est activé.

Hors ligne

Pied de page des forums