|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : juin 2005 Messages : 21 ![]() |
Bonjour,
J'ai un gros problème de performances qui m'interpelle. Je dispose d'un serveur postgres sur lequel sont déployés n bases toutes construites à partir d'un même script, ayant donc la même structure, tables, index ... Je réalise exactement la même requête sur chaque base et j'obtiens des temps de réponse allant de 0,5 s à 45 s! La base la plus chargée donne le meilleur temps! Une instruction VACUUM FULL ANALYZE sur les bases n'y change rien. Si vous avez une idée de ce qui peut expliquer la chose, moi ça me laisse perplexe. Merci |
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : octobre 2008 Messages : 1 505 ![]() |
Il faut comparer l'EXPLAIN ANALYZE d'une requête rapide et lente suivant la base.
|
|
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Inscription : juin 2005 Messages : 21 ![]() |
Bon bah,
Les plans d'exécution ne sont pas nécessairement les mêmes entre chaque base. Le point consommateur est identifié : Code :
Mais je n'ai pas l'explication de pourquoi de telles différences et comment les réduire ... Ca reste pour moi un bon schmilblic! |
||
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : octobre 2008 Messages : 1 505 ![]() |
Voici différentes choses faisables:
- augmenter la précision des statistiques avec ALTER TABLE SET STATISTICS. Par défaut c'est 100 sur 8.4+ et 10 sur versions antérieures. - augmenter work_mem pour favoriser le choix d'un merge join. il peut être changé n'importe quand y compris juste pour une requête - changer les constantes de l'optimiseur comme random_page_cost ou cpu_tuple_cost - mettre enable_nestloop à false ce qui le forcera à choisir autre chose (méthode recommandée quand rien d'autre ne fonctionne). |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : juin 2005 Messages : 21 ![]() |
J'ai fait deux manipulations
- augmenter work_mem pour favoriser le choix d'un merge join - mettre enable_nestloop à false ou off Résultat : aucun changement et ce qui est surprenant c'est qu'il continue à utiliser des nested loop. c'en est désespérant ... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com