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