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/11/2016 16:47:09

f.ravel
Membre

Vacuum au sein de requêtes complexes

Bonjour,

J'aurais souhaité savoir s'il est possible d'inclure des vacuums au sein de requêtes complexes. Je m'explique :

Par exemple, je peux être amené à réaliser de multiples opérations de mises à jour de champs sur une même tables selon se principe : (ce qui me permet d'enchaîner de nombreuses opérations en un coup)

BEGIN;
requête_de_maj_1;
COMMIT;
BEGIN;
requête_de_maj_2;
COMMIT;
BEGIN;
requête_de_maj_3;
COMMIT;
etc...

Si les requêtes sont effectuées manuellement un à une, et avec des vacuums effectués manuellement eux aussi entre chacune d'entre-elles, le temps de calcul total prend un temps "t".

Si j'effectue la requête sous le modèle précédemment décrit le temps de calcul est beaucoup plus long "T" !!! Un vacuum final fait ressortir de très importantes quantités de lignes à supprimer : les lignes "inutiles" s'accumulent donc et les performances de calculs s'effondrent avec le temps.

Si j'essaie d'inclure des vacuums dans ma requête pgAdmin me répond que ce n'est pas possible.

Existe-t-il une méthode pour inclure des vacuums ou peut-être faire différemment ? (je m'y prend peut-être mal, je ne suis pas informaticien de formation)

Merci d'avance pour votre aide.

Hors ligne

#2 08/11/2016 17:47:30

Marc Cousin
Membre

Re : Vacuum au sein de requêtes complexes

Bonjour,

Quel message d'erreur exact avec vous quand vous essayez d'inclure le vacuum ?


Marc.

Hors ligne

#3 08/11/2016 18:00:54

f.ravel
Membre

Re : Vacuum au sein de requêtes complexes

Voici la commande type et le message renvoyé :

UPDATE cad_2016.edi_parc SET code_insee = (SUBSTRING(edi_parc.codcomm FROM 1 FOR 2) || SUBSTRING(edi_parc.codcomm FROM 4 FOR 6));
VACUUM FULL VERBOSE ANALYZE cad_2016.edi_parc;
ERREUR:  VACUUM ne peut pas être exécuté à partir d'une fonction ou d'une chaîne
contenant plusieurs commandes
********** Erreur **********

ERREUR: VACUUM ne peut pas être exécuté à partir d'une fonction ou d'une chaîne
contenant plusieurs commandes
État SQL :25001

Le tout réalisé au sein de pgAdmin

Hors ligne

#4 08/11/2016 18:06:07

Marc Cousin
Membre

Re : Vacuum au sein de requêtes complexes

Ok, c'est une limitation de pgadmin alors… C'est parce qu'il envoie l'ensemble comme un seul ordre SQL.

Vous avez peut-être intérêt à stocker la série d'ordres à exécuter dans un fichier, que vous passerez en paramètre à psql (qui est plus fait pour ça).


Marc.

Hors ligne

#5 08/11/2016 18:17:49

f.ravel
Membre

Re : Vacuum au sein de requêtes complexes

Je vais mener des tests !!!

Merci pour votre retour...

Hors ligne

#6 21/11/2016 16:18:43

f.ravel
Membre

Re : Vacuum au sein de requêtes complexes

Tests réalisés.

En effet cela fonctionne parfaitement de cette manière, les vacuum sont acceptés.

Merci encore pour l'assistance.

Hors ligne

Pied de page des forums