PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Unterschied zwischen INSERT und COPY

Eigentlich eine ganze Reihe von Gründen, aber die wichtigsten sind:

  • Typischerweise warten Clientanwendungen auf die Bestätigung eines INSERT 's Erfolg, bevor Sie den nächsten senden. Es gibt also eine Umlaufverzögerung für jedes INSERT , Planungsverzögerungen usw. (PgJDBC unterstützt die Pipelineverarbeitung von INSERT s in Stapeln, aber mir ist kein anderer Client bekannt, der dies tut).

  • Jedes INSERT muss durch den ganzen Testamentsvollstrecker gehen. Die Verwendung einer vorbereiteten Anweisung umgeht die Notwendigkeit, den Parser, Rewriter und Planner auszuführen, aber es gibt immer noch einen Executor-Zustand, der für jede Zeile eingerichtet und abgebaut werden muss. COPY macht einige Einstellungen einmal und hat eine extreme Geringer Overhead für jede Zeile, insbesondere wenn keine Trigger beteiligt sind.

Der erste Punkt ist der wichtigste. Es dreht sich alles um Netzwerk-Roundtrips und Umplanung von Verzögerungen.