Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Tue 25 February 2020 18:14

Lsam
Participant assidu
Date d'inscription: 27 Nov 2013
Messages: 157

[PostgreSQL] Optimisation des requêtes sur des tables distantes

Bonjour,

Je possède plusieurs bases de données sur mon serveur PostgreSQL. Je partage plusieurs tables sous forme de tables distantes via le module postgre_fdw sur l'une des bases de données.

Par exemple, sur ma base A, je fais une requête avec des jointures entre plusieurs tables TA1, TA2 et TA3. Elle dure de l'ordre de 10s.

Sur ma base B, je dispose de 3 tables étrangères TB1, TB2 et TB3 pointant respectivement vers TA1, TA2 et TA3. La même requête dure plusieurs heures...


Y a-t-il moyen d'améliorer les performances, voire d'obtenir les mêmes performances avec ces tables distantes ?
Merci

LSam

Hors ligne

 

#2 Tue 25 February 2020 19:00

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: [PostgreSQL] Optimisation des requêtes sur des tables distantes

Bonsoir,

Il y a quelques paramètres réglables pour ce FDW: https://www.postgresql.org/docs/current … 11.7.42.10

Vous pouvez regarder le plan des requêtes et voir si ces paramètres le modifient dans le bon sens.

Nicolas

Hors ligne

 

#3 Wed 26 February 2020 09:25

Lsam
Participant assidu
Date d'inscription: 27 Nov 2013
Messages: 157

Re: [PostgreSQL] Optimisation des requêtes sur des tables distantes

Bonjour,

Merci pour le lien, j'avais regardé mais pas osé me lancer dans la modification de ces options.

J'ai d'abord tenté de modifier use_remote_estimate, fdw_tuple_cost ainsi dans les options de mon serveur : use_remote_estimate 'true', fdw_tuple_cost '0.001', fdw_startup_cost '0'.
Les performances sont toujours aussi désastreuses...

Ma requête SQL utilisant une fonction personnalisée, j'ai cru comprendre que la volatilité de la fonction avait son importance dans l'optimisation des requêtes. Les utilisant peu, j'avais omis ce paramètre et laissé 'VOLATILE' par défaut. Or, si la fonction le permet (Cf. la doc. PostgreSQL), 'IMMUTABLE' optimise grandement les requêtes.

Après la conversion de ma fonction en fonction IMMUTABLE, toujours la même lenteur...

Ne maîtrisant pas du tout les optimisations, j'avoue être un peu perdu alors qu'il y a forcément une solution.

Merci pour toute piste.

LSam

Dernière modification par Lsam (Wed 26 February 2020 09:29)

Hors ligne

 

#4 Wed 26 February 2020 14:53

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1160

Re: [PostgreSQL] Optimisation des requêtes sur des tables distantes

Salut,

est ce que vous pourriez nous poster le resultat du
EXPLAIN VERBOSE de votre requête afin qu'on puisse étudier le plan ?

Si vous pouvez, poster le à l'aide de ce site qui met en forme les explains :

https://explain.depesz.com/

EDIT:
je n'avais pas vu que Nicolas avait déja suggéré l'idée.

Dernière modification par tumasgiu (Wed 26 February 2020 14:53)

Hors ligne

 

#5 Wed 26 February 2020 15:31

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1160

Re: [PostgreSQL] Optimisation des requêtes sur des tables distantes

Peut être que  créer une vue de la jointure coté serveur distant améliorerait les performances.

Hors ligne

 

#6 Wed 26 February 2020 15:37

Lsam
Participant assidu
Date d'inscription: 27 Nov 2013
Messages: 157

Re: [PostgreSQL] Optimisation des requêtes sur des tables distantes

Hors ligne

 

#7 Thu 27 February 2020 12:21

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1160

Re: [PostgreSQL] Optimisation des requêtes sur des tables distantes

Merci.

Est ce que c'est possible d'avoir la requête ?

Si vous pouviez aussi lancer les requêtes avec EXPLAIN ANALYZE VERBOSE,
pour avoir les temps d'execution, et les reposter sur explain.despez.

Est ce que vous avez essayer de faire d'utiliser une vue distante?

Dernière modification par tumasgiu (Thu 27 February 2020 16:28)

Hors ligne

 

Pied de page des forums

Powered by FluxBB