Re: insert multi values limitations

From: CRUMEYROLLE Pierre <pierre(dot)crumeyrolle(at)c-s(dot)fr>
To: pgsql-fr-generale(at)lists(dot)postgresql(dot)org
Subject: Re: insert multi values limitations
Date: 2019-09-23 12:36:30
Message-ID: 20190923143630.Horde.JyrCuPJV1WgE5y57ur2mUA1@messagerie.c-s.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

Ok merci
testé, je confirme
spring.jpa.properties.hibernate.jdbc.batch_size => exprimé en
puissance de 2 => insert non splitté

Anthony Nowocien <anowocien(at)gmail(dot)com> a écrit :

> Bonjour,
>
> D'après
> https://stackoverflow.com/questions/47664889/jdbc-batch-operations-understanding/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 are
> 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-postgresql-server-side-prepared-statement/32300222#32300222>
> )" *
>
> Si tu souhaites envoyer exactement le nombre de valeurs précisées dans
> batch_size, alors il faudra mettre une puissance de 2, sous peine de voir
> l'INSERT splitté.
>
> Anthony
>
>
> On Mon, Sep 23, 2019, 11:24 CRUMEYROLLE Pierre <pierre(dot)crumeyrolle(at)c-s(dot)fr>
> wrote:
>
>>
>> bonjour
>>
>> je teste une insertion multi valeurs via spring boot jpa hibernate jdbc ,
>> en positionnant les paramètres suivants :
>>
>> spring.jpa.properties.hibernate.jdbc.batch_size=10
>> reWriteBatchedInsereWriteBatchedInserts=true dans ma connexion jdbc
>>
>> spring.datasource.url=jdbc:postgresql://localhost:5432/postgres?reWriteBatchedInserts=true
>>
>> normalement ceci doit générer des insert multi valeurs par paquets de
>> 10 => insert into mytable (id , data) values
>> (1,),(,),(,),(,),(,),(,),(,),(,),(,),(10,)
>>
>> mais je constate que les insert multi values sont "splités" de la
>> façon 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ègles particulières
>> et en effet je retombe dans le scénario décrit en fin de cette page =>
>>
>> https://vladmihalcea.com/postgresql-multi-row-insert-rewritebatchedinserts-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
>>
>>
>>

In response to

Browse pgsql-fr-generale by date

  From Date Subject
Next Message Damien Clochard 2019-10-11 07:26:23 Rejoignez-nous sur le stand PostgreSQL au salon Paris OSS 2019
Previous Message Anthony Nowocien 2019-09-23 10:44:25 Re: insert multi values limitations