वास्तव में कई कारण हैं, लेकिन मुख्य हैं:
-
आमतौर पर, क्लाइंट एप्लिकेशन एक
INSERT
. की पुष्टि के लिए प्रतीक्षा करते हैं अगली भेजने से पहले की सफलता। इसलिए प्रत्येकINSERT
. के लिए राउंड-ट्रिप विलंब है , शेड्यूलिंग में देरी, आदि। (PgJDBC पाइपलाइनिंग का समर्थन करता हैINSERT
s बैचों में, लेकिन मुझे ऐसा करने वाले किसी अन्य क्लाइंट के बारे में पता नहीं है)। -
प्रत्येक
INSERT
पूरे निष्पादक के माध्यम से जाना है। एक तैयार कथन का उपयोग पार्सर, पुनर्लेखक और योजनाकार को चलाने की आवश्यकता को छोड़ देता है, लेकिन प्रत्येक पंक्ति के लिए सेट अप और फाड़ने के लिए अभी भी निष्पादक स्थिति है।COPY
कुछ सेटअप एक बार करता है, और एक बेहद है प्रत्येक पंक्ति के लिए कम ओवरहेड, विशेष रूप से जहां कोई ट्रिगर शामिल नहीं है।
पहला बिंदु सबसे महत्वपूर्ण है। यह नेटवर्क राउंड-ट्रिप और पुनर्निर्धारण में देरी के बारे में है।