| From: | Alain <eurlix(dot)alain(at)free(dot)fr> | 
|---|---|
| To: | pgsql-fr-generale(at)postgresql(dot)org | 
| Cc: | Valérie SCHNEIDER <valerie(dot)schneider(at)meteo(dot)fr> | 
| Subject: | Re: Problème d'update et de performance | 
| Date: | 2008-05-16 11:10:47 | 
| Message-ID: | 20080516131047.4789e485.eurlix.alain@free.fr | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-fr-generale | 
On Fri, 16 May 2008 09:15:51 +0000
Valérie SCHNEIDER <valerie(dot)schneider(at)meteo(dot)fr> wrote:
> Bonjour,
> 
> Nous observons un comportement curieux d'une série d'update sur une base
> PG. Je suis preneur d'explication si vous en avez ...
> 
> Voilà : il s'agit d'une base PG 8.3.1 sur serveur linux RedHat 5.1 64
> bit avec 4 Go de RAM :
> 
> Date: mer mai 14 09:38:14 GMT 2008
> Système Linux: Linux TDIFINTG 2.6.18-53.el5xen #1 SMP
>                 Wed Oct 10 16:48:44 EDT 2007 x86_64 x86_64 x86_64
> GNU/Linux
> Redhat-Release: Red Hat Enterprise Linux Server release 5.1 (Tikanga)
> Version Postgresql: 8.3.1
> 
> Au niveau de postgresql .conf :
> # - Memory -
> shared_buffers = 1024MB                 # min 128kB or
> max_connections*16kB
> 
> # - Checkpoints -
> checkpoint_segments = 10                # in logfile segments, min 1,
> 16MB each
> 
> # pour les vacuum
> maintenance_work_mem = 256MB            # min 1MB
> 
> # Pour les operations de tri
> work_mem = 16MB                         # min 64kB
> 
> # memoire partagee utilisee par une transaction typique.
> wal_buffers = 1024kB                    # min 32kB
> 
> autovacuum = off                       # enable autovacuum subprocess?
> 
> 
> Un cron effectue des analyze sur les tables à intervalles choisis.
> 
> On effectue un update sur une table de 5 millions de lignes, de taille
> environ 3Go, portant sur environ 50000 lignes, selon des critères
> utilisant un index.
> En exécutant plusieurs fois à la suite le même update (donc à partir du
> second plus aucune ligne n'est mise à jour) on observe des temps très
> longs pour finalement tomber à quelques millisecondes (qui est le
> résultat attendu).
> 
> Que se passe-t'il d'après vous ?
> 
> 
> Ci-dessous en pièce jointe la description de la table, des index, et une
> série d'explain analyze update.
> 
> 
> Merci !
> Valérie.
> 
> -- 
> 
Bonjour,
Voilà une question intéressante, en résumé :
mise à jour de 1% d'une table de 5 millions de lignes soit environ 3Go,
temps de traitement de < 15mn à < 3ms.
Vu les temps, ce doit être du batch : jamais vu personne capable de faire ça.
Tous les SGBD ont tendance à privilégier le conversationnel et c'est normal.
1/ En batch, le temps ne parait pas très important ...
2/ À quel intervalle de temps (!) avez vous lancé vos mises à jour ?
Je suis loin d'être un gourou, mais quelques pistes à explorer :
- mettre en début de procédure un "begin work" et en fin un "commit work"
  juste pour lui dire que c'est validé,
- PG stocke temporairement les modifs en mémoire, puis ensuite dans /tmp,
  combien de temps ? existe-t'il quelque chose style "sync" ?
  AMHA juste VACUUM, mais il faudrait en mettre un AU DÉBUT de votre transaction
  pour voir.
Espérant vous aider,   
-- 
Alain <eurlix(dot)alain(at)free(dot)fr>
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Guillaume Lelarge | 2008-05-16 11:33:05 | Re: Problème d'update et de performance | 
| Previous Message | Valérie SCHNEIDER | 2008-05-16 09:15:51 | Problème d'update et de performance |