Re: traitement par lots et sequence
CRUMEYROLLE Pierre <[email protected]> Wed, 12 Jun 2019 14:18:25 +0200
| Newsgroups | gmane.comp.db.postgresql.french |
|---|---|
| Message-ID | <[email protected]> |
Ok je confirme l'accumulation d'ordre TCL begin commit plombe les perfs mon petit exemple est =C3=A0 titre d'exemple en fait j'analyse une enorme usine =C3=A0 gaz code en hibernate/jpa cod=C3= =A9=20=20 par=20des adeptes de l'object qui ont pas penser au monde relationnel ... et =C3=A7a fait mal via pgbadger donc j'introduit du traitement par bath + de l agestion de sequnce par=20= =20 plage=20+ de l agestion de transaction Daniel Verite <[email protected]> a =C3=A9crit=C2=A0: > CRUMEYROLLE Pierre wrote: > >> 3 - boucle sur tous les id de m=C3=A8re >> for i in liste_id_mere >> { >> insertion d'un paquet de j filles pour une m=C3=A8re >> insert into T_filles idFils,idMere,datamere values >> ((j,i,dataf1),(j,i,dataf2),(j,i,dataf3), .... (j,i,datafn)); >> } >> } >> >> je suis oblig=C3=A9 de faire de l'insert par batch car l'insertion >> unitaire postgresql n'est pas top , seul le traitement par lots donne >> des perfs convenables. > > N'oubliez pas de faire tout =C3=A7a dans la m=C3=AAme transaction, sinon = c'est > les commit interm=C3=A9diaires implicites qui ruinent les performances. > > Ind=C3=A9pendamment de =C3=A7a, effectivement envoyer beaucoup d'INSERT a= vec peu > de donn=C3=A9es =C3=A0 chaque fois n'est pas ce qu'il y a de plus efficac= e, mais > au vu de l'=C3=A9tape 3 ci-dessus, on ne voit pas pourquoi cette boucle F= OR > ne construit pas un seul INSERT par accumulation de VALUES, et > l'ex=C3=A9cute une seule fois en dehors de la boucle. Puisque que =C3=A7= a > ins=C3=A8re toujours dans la m=C3=AAme table et toujours avec les m=C3=AA= me colonnes > cibles. > > Et une fois qu'on en est l=C3=A0 dans le raisonnement, on peut se demande= r > aussi si =C3=A7a ne pourrait pas faire un COPY dans la table cible au lie= u > d'un INSERT g=C3=A9ant, ce qui serait plus rapide aussi en permettant > notamment un effet de pipeline entre le client et le serveur. > > > Cordialement, > -- > Daniel V=C3=A9rit=C3=A9