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 Re : Optimisation » Lenteur d'execution d'une requete avec la version 8.4 » 31/01/2012 17:16:21

Pour affiner les tests, j'ai une fonction PL/PGSQL identique, base identiques sur ces deux versions de postgresql avec très peu
de d'enregistrements en retour (max 112 enregistrements).

La fonction balaie une première table de 600 enregistrements pour extraire toutes les variables associées au point 531 et construit
un tableau pour ces variables trouvées à partir des données de la table data.
ancien serveur :
explain analyse
select * from extrac_intervalleforlocation(531)
"Function Scan on extrac_intervalleforlocation  (cost=0.00..260.00 rows=1000 width=68) (actual time=8357.165..8357.205 rows=112 loops=1)"
"Total runtime: 8357.263 ms"

nouveau serveur
select * from extrac_intervalleforlocation(531)
"Function Scan on extrac_intervalleforlocation  (cost=0.00..260.00 rows=1000 width=68) (actual time=21074.153..21074.156 rows=112 loops=1)"
"Total runtime: 21074.182 ms"

Ici c'est le temps d'execution de la fonction qui est plus du double pour notre nouveau serveur en 8.4 !!!

Dernier test; passage au postgres9.1  sur nouveau serveur et lancement des mêmes tests:
    - temps d'execution < 1 seconde pour le select * from data limit 200000;
    - temps d'execution proche de la seconde pour le select * from extrac_intervalleforlocation(531)

Conclusion : version 8.4 pose réellement un probleme.

#2 Re : Optimisation » Lenteur d'execution d'une requete avec la version 8.4 » 31/01/2012 12:38:23

La table data contient 13 millions d'enregistrements,
11 champs dont 1 champ date et des integer

la requete sur cette table data :
select * from data limit 200000

Le temps est proportionnel aux nombre d'enregistrements retournés et dans un rapport de 1 à 10 toujours
explain analyse select * from data limit 200000 ne me renseigne pas beaucoup !!!
"Limit  (cost=0.00..4270.96 rows=200000 width=49) (actual time=0.022..45.561 rows=200000 loops=1)"
"  ->  Seq Scan on data  (cost=0.00..280496.44 rows=13135044 width=49) (actual time=0.021..23.217 rows=200000 loops=1)"
"Total runtime: 57.002 ms"

#3 Optimisation » Lenteur d'execution d'une requete avec la version 8.4 » 31/01/2012 12:23:22

Le Martret
Réponses : 7

Nous avons observé un temps de réponse de 1 à 10 pour une requête simple (select * from data limit 2000000) qui retourne 200000 enregistrements entre  deux versions de postgresql  8.3 et 8.4 avec la même base de données.

1 - ancien serveur
postgresql 8.3  :   Ubuntu 8.04 LTS server, : temps de réponse <2s

2 - nouveau serveur   plus puissant !!!!
postgresql 8.4  :   Ubuntu 10.04 LTS server :  temps de réponse >20s

Idem sur station deux autres stations de travail  avec Ubuntu 10.04 et postgresql 8.4

y-a-t-il une optimisation particulière pour régler ce problème ?
Est-ce un problème d'optimisation ?

Pied de page des forums

Propulsé par FluxBB