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 >> >> >>