PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Differenza tra INSERT e COPY

Un bel po' di ragioni, in realtà, ma le principali sono:

  • In genere, le applicazioni client attendono la conferma di un INSERT Il successo prima di inviare il successivo. Quindi c'è un ritardo di andata e ritorno per ogni INSERT , ritardi nella pianificazione e così via (PgJDBC supporta la pipeline INSERT s in batch, ma non sono a conoscenza di altri client che lo fanno).

  • Ogni INSERT deve passare attraverso l'intero esecutore. L'uso di un'istruzione preparata evita la necessità di eseguire il parser, il rewriter e il pianificatore, ma c'è ancora lo stato dell'esecutore da impostare e smontare per ogni riga. COPY esegue alcune impostazioni una volta e ha un estremamente basso sovraccarico per ogni riga, soprattutto quando non sono coinvolti trigger.

Il primo punto è il più significativo. Si tratta di viaggi di andata e ritorno della rete e ritardi di riprogrammazione.