[gull] Parallelize Postgresql request
felix
felix at f-hauri.ch
Thu Oct 10 08:39:03 CEST 2024
Voilà un sujet surprenant.
Un client me contacte car il à créé une base de données PostgreSQL,
sous window, avec une machine performante. Son projet fonctionne,
il décide de le passer sur machine tournant sous Linux.
Là il constate qu'un requête `select count(*) from SomeView where Id=12;`
prend environ 28 secondes sous Linux alors que sous Window, la réponse
arrive en 8 secondes!
Les machines sont différentes, mais cela n'explique pas:
- Window 32G 12 coeurs 3GHz
- Linux 16G 8 coeurs. 3.2GHz
Sous linux la swap n'est pas accédée.
En donc en suivant les acticités des processeurs, sous window on voit
clairement les 12 cpu qui s'agittent durant les 8 secondes, alors que
sous linux, on voit 1 processeur au top durant 4 secondes, puis un autre
``prend le relais'', ainsi de suite, à aucun moment je ne voit plus d'un
coeur au top. A noter que sous window, les 12 courbes s'agittent mais
aucune ne top (cela me semble logique en réfléchissant à la complexité
d'un requête de VUE qui contient des JOIN et autre resultat à imbriquer).
J'ai cherché les options de parallelization dans les configs de postgresql,
sur google&co, je dois dire que je ne vois pas...
Je n'ai pas bien compris non plus les calculs de coûts:
#seq_page_cost = 1.0 # measured on an arbitrary scale
#random_page_cost = 4.0 # same scale as above
#cpu_tuple_cost = 0.01 # same scale as above
#parallel_tuple_cost = 0.1 # same scale as above
#parallel_setup_cost = 1000.0 # same scale as above
...
Il faut dire que ``measured on an arbitrary scale'' et ``same scale as above''
ne sont pas des information très explicites.
--
Félix Hauri - <felix at f-hauri.ch> - http://www.f-hauri.ch
More information about the gull
mailing list