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 13/10/2016 12:01:46

tsn77130
Membre

Freeze postgres avec requete d'update 500 paramètres dans le IN

Bonjour à tous,

je rencontre un problème de freeze de postgres lors de la mise a jour d'un champ par rapport à une liste de valeurs passée en argument dans le IN de la clause WHERE.

Ce qui est étrange, c'est que le freeze n'intervient qu'a partir de 500 arguments, ce qui me ferait penser a une sorte de buffer overflow


Ex :

update accounts_v1
set active = true
where (account_id, field_id) in ( (6262,5),(6622,22),(2254,7),(2698,70),(2310,4),(6135,22),... )


A 499 entrées dans le IN, l'update passe instantanément, à 500 postgres freeze, et je suis obligé de restart le process.

Ce que j'entend par "freeze", c'est qu'il est possible de se connecter, mais que postgres ne répond plus à aucune requete (meme un "select 1" reste bloqué)

Auriez vous une idée de ce qui se passe ?

Dernière modification par tsn77130 (13/10/2016 12:02:11)

Hors ligne

#2 13/10/2016 13:17:29

rjuju
Administrateur

Re : Freeze postgres avec requete d'update 500 paramètres dans le IN

De quelle version de postgres s'agit-il ? Pouvez-vous fournir le nécessaire pour reproduire le problème ?

Hors ligne

#3 13/10/2016 15:54:15

tsn77130
Membre

Re : Freeze postgres avec requete d'update 500 paramètres dans le IN

C'est la version 9.5.3

J'ai joué cette batterie de tests sur 3 serveurs différents, 2 ont freezé, et sur le 3eme (pourtant beaucoup moins puissant), c'est passé correctement.

Le plus simple serait que je puisse joindre des fichiers pour reproduire le problèmes, mais il n'y a à priori pas cette possibilité.
Comment puis-je vous les fournir ?

Hors ligne

#4 13/10/2016 16:13:24

gleu
Administrateur

Re : Freeze postgres avec requete d'update 500 paramètres dans le IN

Les plans d'exécution sont différents ? ce serait intéressant de les voir.


Guillaume.

Hors ligne

#5 13/10/2016 17:54:08

tsn77130
Membre

Re : Freeze postgres avec requete d'update 500 paramètres dans le IN

Je viens de trouver d'ou cela vient : le chargement de shared_preload_libraries pour POWA ...
shared_preload_libraries='pg_stat_statements,powa,pg_stat_kcache,pg_qualstats'

C'est l'une des différences que j'avais entre mes 2 serveurs, et une fois désactivées, la requête passait bien ...

Hors ligne

#6 13/10/2016 18:24:07

rjuju
Administrateur

Re : Freeze postgres avec requete d'update 500 paramètres dans le IN

Il s'agit d'un bug dans pg_qualstats.  Vous pouvez désactiver uniquement cette extension (ou configurer pg_qualstats.enabled = false pour le faire sans redémarrer l'instance si besoin).  Je viens d'ajouter quelques commandes pour reproduire le problème : https://github.com/dalibo/pg_qualstats/ … -253563800

On va corriger ça dès que possible.

Hors ligne

#7 13/10/2016 19:43:21

rjuju
Administrateur

Re : Freeze postgres avec requete d'update 500 paramètres dans le IN

Le bug est corrigé : https://github.com/dalibo/pg_qualstats/ … 439393e095


Une prochaine version de l'extension va bientôt être publiée. Merci pour le rapport de bug.

Hors ligne

#8 21/10/2016 11:01:25

tsn77130
Membre

Re : Freeze postgres avec requete d'update 500 paramètres dans le IN

Merci pour votre réactivité !

Hors ligne

Pied de page des forums