Pages: 1
- Sujet précédent - [PostgreSQL] Optimisation des requêtes sur des tables distantes - Sujet suivant
#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
Voici les explains :
- requête sur les tables du serveur A
- requête sur les tables distantes à partir du serveur B
Merci pour le coup de main.
LSam
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
Pages: 1
- Sujet précédent - [PostgreSQL] Optimisation des requêtes sur des tables distantes - Sujet suivant