Heel wat redenen eigenlijk, maar de belangrijkste zijn:
-
Gewoonlijk wachten client-applicaties op bevestiging van één
INSERT
's succes voordat u de volgende verzendt. Er is dus een retourvertraging voor elkeINSERT
, vertragingen in de planning, enz. (PgJDBC ondersteunt pijplijnenINSERT
s in batches, maar ik ken geen andere klanten die dat wel doen). -
Elke
INSERT
moet de hele uitvoerder doorlopen. Het gebruik van een voorbereide instructie omzeilt de noodzaak om de parser, rewriter en planner uit te voeren, maar er is nog steeds een uitvoerdersstatus om voor elke rij in te stellen en af te breken.COPY
doet een keer wat setup, en heeft een extreem lage overhead voor elke rij, vooral als er geen triggers bij betrokken zijn.
Het eerste punt is het belangrijkste. Het draait allemaal om heen- en terugreis via het netwerk en het opnieuw plannen van vertragingen.