Re: insert multi values limitations

CRUMEYROLLE Pierre <[email protected]> Mon, 23 Sep 2019 14:36:30 +0200
Newsgroups gmane.comp.db.postgresql.french
Message-ID <[email protected]>
Ok merci
test=C3=A9, je confirme
spring.jpa.properties.hibernate.jdbc.batch_size =3D> exprim=C3=A9 en=20=20
puissance=20de 2 =3D> insert non splitt=C3=A9

Anthony Nowocien <[email protected]> a =C3=A9crit=C2=A0:

> Bonjour,
>
> D'apr=C3=A8s
> https://stackoverflow.com/questions/47664889/jdbc-batch-operations-unders=
tanding/48349524#48349524
>
> *"It is smart enough to use 2 statements in order to insert 10 rows. The
> first one is 8-valued statement, and the second one is 2-valued statement=
.
> Usage of powers of two enables pgjdbc to keep the number of distinct
> statements sane, and that improves performance as often-used statements a=
re
> server-prepared (see What's the life span of a PostgreSQL server-side
> prepared statement
> <https://stackoverflow.com/questions/32297503/whats-the-life-span-of-a-po=
stgresql-server-side-prepared-statement/32300222#32300222>
> )" *
>
> Si tu souhaites envoyer exactement le nombre de valeurs pr=C3=A9cis=C3=A9=
es dans
> batch_size, alors il faudra mettre une puissance de 2, sous peine de voir
> l'INSERT splitt=C3=A9.
>
> Anthony
>
>
> On Mon, Sep 23, 2019, 11:24 CRUMEYROLLE Pierre <[email protected]=
>
> wrote:
>
>>
>> bonjour
>>
>> je teste une insertion multi valeurs via spring boot jpa hibernate jdbc =
,
>> en positionnant les param=C3=A8tres suivants :
>>
>> spring.jpa.properties.hibernate.jdbc.batch_size=3D10
>> reWriteBatchedInsereWriteBatchedInserts=3Dtrue  dans ma connexion jdbc
>>
>> spring.datasource.url=3Djdbc:postgresql://localhost:5432/postgres?reWrit=
eBatchedInserts=3Dtrue
>>
>> normalement ceci doit g=C3=A9n=C3=A9rer des insert multi valeurs par paq=
uets de
>> 10 =3D> insert into mytable (id , data) values
>> (1,),(,),(,),(,),(,),(,),(,),(,),(,),(10,)
>>
>> mais je constate que les insert multi values  sont "split=C3=A9s" de la
>> fa=C3=A7on suivante
>>
>> insert into mytable (id , data) values (1,),(,),(,),(,),(,),(,),(,),(8,)
>> insert into mytable (id , data) values (9,),(10,),
>>
>> il semblerait que le driver postgres split les insert multi values
>> suivant des r=C3=A8gles particuli=C3=A8res
>> et en effet je retombe dans le sc=C3=A9nario d=C3=A9crit en fin de cette=
 page =3D>
>>
>> https://vladmihalcea.com/postgresql-multi-row-insert-rewritebatchedinser=
ts-property/
>> qui dit "the PostgreSQL driver will split it into smaller ones to
>> address TCP deadlock issues"
>>
>> quelqu'un peut il me donner une petite explication confirmation sur ce
>> comportement
>>
>> Merci
>>
>>
>>