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 07/06/2021 11:50:15

dev.isc84
Membre

Requete devenue soudainement extremement lente

Bonjour,
J'aurais besoin d'aide svp pour un problème de requête qui est devenue très lente du jour au lendemain, sans que les données dans les tables n'aient explosées entre temps.

Sur un serveur postgres 11 (debian) de 80Go avec environ 400 utiilisateurs, une des requêtes est devenue soudainement très lente: elle s'exécutait en quelques millièmes de secondes et prends maintenant plus de 2 minutes.
Cette requête contient une vue A qui elle même utilise une autre vue B.

Si je place le code sql de la vue A directement dans ma requête, en en faisant une sous requête, là le résultat est instantané.

Auriez vous svp une idée de ce qui peut se passer?

Merci pour votre aide

Hors ligne

#2 07/06/2021 12:31:47

dev.isc84
Membre

Re : Requete devenue soudainement extremement lente

J'apporte une précision, je viens de découvrir que le blocage est lié à une table qui vient d'être créée, et qui est vide. C'est une table qui hérite d'une autre table utilisée dans la vue B.
En supprimant cette nouvelle table tout se débloque.
Je ne comprends pas comment la simple création d'une table peut bloquer.

Hors ligne

#3 07/06/2021 16:41:24

ruizsebastien
Membre

Re : Requete devenue soudainement extremement lente

Bonjour,

peut-être tout simplement un problème de statistiques pas à jour qui tromperait le planificateur ?.
Le mieux serait de comparer les plans d'exécution avant et après la création de cette nouvelle table et ensuite de recalculer les stats de la base entière pour voir s'il y a du mieux.


Cordialement,

Sébastien.

Hors ligne

#4 08/06/2021 09:20:04

dev.isc84
Membre

Re : Requete devenue soudainement extremement lente

Bonjour,
Merci pour la réponse. Je ferai des tests pour voir si effectivement cela corrige le problème.

Hors ligne

#5 05/05/2022 16:48:53

tchazou
Membre

Re : Requete devenue soudainement extremement lente

Bonjour je ne sais pas si c'est ici que je dois poser ma préoccupation
j'ai un problème et je souhaite une assiste
j'ai deux tables par exemple:

Facture(code verchar(8),date datetime,montant real)  avec le champ code qui est une clef unique
ensuite la table

Lifact(code varchar(8), codart int, qte real) avec les champs (code,codart) qui reprensentent une clef unique

Le champ code du fichier Lifact fait reference à la table Facture....

Lorsque j'exécute ceci dans une seule transaction:

BEGIN TRANSACTION
INSERT INTO FACTURE ('NB0014',NOW(),5000);
INSERT INTO LIFACT ('NB0014','BAR0005',10);
END;
j'ai le message d'erreur suivant: une instruction insert viole la contrainte de clef étrangère, le clef  "code=('NB0014') n'est pas présente dans la table FACTURE

l'erreur est à quel niveau? devais je d'abord enregistrer complètement la première ligne avant de procéder à l'enregistrement de la seconde ligne? et si c'est le cas  je cours le risque d'avoir des informations dans le Fichier FACTURE SANS CORRESPONDANCE DANS LE FICHIER LIFACT.

S.O.S

Hors ligne

#6 07/05/2022 09:47:56

gleu
Administrateur

Re : Requete devenue soudainement extremement lente

1. Non, ce n'est pas ici. Vous auriez dû créer un nouveau thread plutôt que d'utiliser un autre thread qui n'a rien à voir.

2. J'ai essayé de reproduire votre exemple mais sans succès : verchar au lieu de varchar, datetime qui n'existe pas avec postgres, begin sans point-virgule, insert sans clause values, et surtout ce qui a fait déborder le vase, deux chaînes de caractères dans l'INSERT de LIFACT alors qu'il n'y a qu'un seul varchar dans la déclaration de la table. Bref. Commencez par proposer un exemple réellement valide syntaxiquement et montrant votre problème si vous espérez obtenir une réponse intéressante.


Guillaume.

Hors ligne

Pied de page des forums