Re: traitement par lots et sequence
CRUMEYROLLE Pierre <[email protected]> Wed, 12 Jun 2019 15:56:49 +0200
| Newsgroups | gmane.comp.db.postgresql.french |
|---|---|
| Message-ID | <[email protected]> |
je confirme avec ce genre de technique : ddBatch() et executeBatch()=20=20 gain=20de perf d'un facteur 10 Daniel Verite <[email protected]> a =C3=A9crit=C2=A0: > CRUMEYROLLE Pierre wrote: > >> en fait j'analyse une enorme usine =C3=A0 gaz code en hibernate/jpa cod= =C3=A9 >> par des adeptes de l'object > > Effectivement =C3=A7a complique beaucoup l'affaire, je compatis... > > Juste une piste qui peut m=C3=A9riter un coup d'oeil si une refactorisati= on > n'est pas possible: JDBC a un mode batch qui permet d'acc=C3=A9lerer > ce genre d'INSERTs =C3=A0 la file. > Ca s'utilise avec les m=C3=A9thodes addBatch() et executeBatch() > de Statement, cf [1]. > > L'effet est que les INSERT d'apr=C3=A8s sont envoy=C3=A9s par le client > alors que les INSERT d'avant sont encore en train de s'ex=C3=A9cuter > sur le serveur, ce qui acc=C3=A9l=C3=A8re globalement l'ensemble > (effet pipeline, comme COPY). > > D'ailleurs un patch a =C3=A9t=C3=A9 propos=C3=A9 pour faire =C3=A7a dans = libpq (en C) [2], > je l'avais test=C3=A9 avec pgbench il y a quelque temps et les r=C3=A9su= ltats > =C3=A9taient impressionnants. > Malheureusement il est rest=C3=A9 tank=C3=A9 dans le processus de validat= ion > (mais je ne d=C3=A9sesp=C3=A8re pas qu'il pourrait revivre pour une int= =C3=A9gration > dans Postgres 13). > Le driver JDBC de PostgreSQL n'est pas bas=C3=A9 sur libpq et a d=C3=A9j= =C3=A0 > cette fonctionnalit=C3=A9. > > > [1] > https://stackoverflow.com/questions/3784197/efficient-way-to-do-batch-ins= erts-with-jdbc/ > [2] https://commitfest.postgresql.org/10/634/ > > > Cordialement, > -- > Daniel V=C3=A9rit=C3=A9