Re: traitement par lots et sequence
"Daniel Verite" <[email protected]> Wed, 12 Jun 2019 15:45:23 +0200
| Newsgroups | gmane.comp.db.postgresql.french |
|---|---|
| Message-ID | <[email protected]> |
CRUMEYROLLE Pierre wrote: > en fait j'analyse une enorme usine =E0 gaz code en hibernate/jpa cod=E9= =20=20 > par des adeptes de l'object Effectivement =E7a complique beaucoup l'affaire, je compatis... Juste une piste qui peut m=E9riter un coup d'oeil si une refactorisation n'est pas possible: JDBC a un mode batch qui permet d'acc=E9lerer ce genre d'INSERTs =E0 la file. Ca s'utilise avec les m=E9thodes addBatch() et executeBatch() de Statement, cf [1]. L'effet est que les INSERT d'apr=E8s sont envoy=E9s par le client alors que les INSERT d'avant sont encore en train de s'ex=E9cuter sur le serveur, ce qui acc=E9l=E8re globalement l'ensemble (effet pipeline, comme COPY). D'ailleurs un patch a =E9t=E9 propos=E9 pour faire =E7a dans libpq (en C) [= 2], je l'avais test=E9 avec pgbench il y a quelque temps et les r=E9sultats =E9taient impressionnants. Malheureusement il est rest=E9 tank=E9 dans le processus de validation (mais je ne d=E9sesp=E8re pas qu'il pourrait revivre pour une int=E9gration dans Postgres 13). Le driver JDBC de PostgreSQL n'est pas bas=E9 sur libpq et a d=E9j=E0 cette fonctionnalit=E9. [1] https://stackoverflow.com/questions/3784197/efficient-way-to-do-batch-inser= ts-with-jdbc/ [2] https://commitfest.postgresql.org/10/634/ Cordialement, -- Daniel V=E9rit=E9