Sebenarnya cukup banyak alasan, tetapi yang utama adalah:
-
Biasanya, aplikasi klien menunggu konfirmasi satu
INSERT
's sukses sebelum mengirim berikutnya. Jadi ada penundaan pulang pergi untuk setiapINSERT
, penundaan penjadwalan, dll. (PgJDBC mendukung pipelineINSERT
s dalam batch, tapi saya tidak mengetahui ada klien lain yang melakukannya). -
Setiap
INSERT
harus melalui seluruh pelaksana. Penggunaan pernyataan yang disiapkan mengabaikan kebutuhan untuk menjalankan pengurai, penulis ulang, dan perencana, tetapi masih ada status pelaksana yang harus disiapkan dan dirobohkan untuk setiap baris.COPY
melakukan beberapa penyiapan sekali, dan memiliki sangat overhead rendah untuk setiap baris, terutama jika tidak ada pemicu yang terlibat.
Poin pertama adalah yang paling signifikan. Ini semua tentang perjalanan pulang pergi jaringan dan penjadwalan ulang penundaan.