बहु-पंक्ति सम्मिलित बनाम एकाधिक एकल पंक्ति आवेषण


9

अपने ऐप में मैं बहु-पंक्ति आवेषण करता हूं, जब मैं सिर्फ इसलिए कर सकता हूं क्योंकि यह db और ऐप के बीच गोल यात्राओं की संख्या को कम करता है।

हालांकि, मैं उत्सुक था, क्या कोई अन्य लाभ है? उदाहरण के लिए, यदि कई पंक्तियों को इस तरह एक बार में डाला जाता है:

insert into tbl (c1, c2) values
(v1, v2)
(v3, v4)

बनाम:

insert into tbl (c1, c2) values (v1, v2)
insert into tbl (c1, c2) values (v3, v4)

और तालिका में एक सूचकांक है, क्या पहले मामले में एक बार और दूसरे मामले में दो बार सूचकांक की गणना की जाती है? या यह हमेशा एक बार डाला जाता है? मान लें कि दोनों प्रश्न एक ही लेनदेन में हैं।

मैं PostgreSQL का उपयोग कर रहा हूं।


2
मुझे लगता है कि सूचकांक अद्यतन किया गया है यह एक बार प्रति कथन है , एक बार प्रति पंक्ति नहीं । अतः एकल कथन दो कथनों से अधिक कुशल होना चाहिए। लेकिन मुझे यकीन नहीं है (इसलिए कोई जवाब नहीं, सिर्फ एक टिप्पणी)
a_horse_with_no_name

1
मुझे लगता है कि सही प्रश्न है, क्या यह उसी लेन-देन में संलग्न है। पेट से बाहर, अगर दोनों लेनदेन में हैं, तो कोई अंतर नहीं होगा।
user1363989

@ user1363989, मैंने अपने प्रश्न को इंगित करने के लिए अपडेट किया है कि दोनों प्रश्न एक ही लेनदेन में होंगे
cdmckay

जवाबों:


5

मुझे लगता है कि @a_horse_with_no_name इस बारे में सही है कि सूचकांक प्रति कथन एक बार अपडेट किया जाता है, क्योंकि यदि कथन ने अपने निष्पादन को पूरा नहीं किया है तो लेनदेन के बाद से डेटा दिखाई नहीं देगा। और एक बयान की परिभाषा में कई मान शामिल हैं

और डॉक्स के लिए यहाँ इंडेक्स निर्माण / अद्यतन एकल बयानों की तुलना में बैचों के साथ अधिक कुशल काम करता है।

पीटर इन्सिस के विभिन्न इंसर्ट मेथड्स के प्रदर्शन के बारे में भी एक अच्छा लेख है जो मैं सुझा सकता हूं।

एक और बात ध्यान में रखना FILLFACTORसूचकांक का है क्योंकि इसमें प्रदर्शन पर प्रभाव पड़ता है जैसा कि फेबियन कोएलो ने यहां बताया है


यदि लेन-देन में क्वेरीज़ बैचेड हैं, तो क्या इंडेक्स अपडेट एक बार-प्रति-स्टेटमेंट होगा? क्या किसी और चीज़ के कारण प्रदर्शन में अंतर होगा? मैं या तो लेख तक पहुंचने में असमर्थ हूं: क्या आप कृपया पुनः लिंक कर सकते हैं?
बैटब्रैट

1

मुझे विश्वास नहीं हो रहा है कि वर्तमान में इस संबंध में सूचकांक रखरखाव के क्षेत्र में कोई अनुकूलन मतभेद हैं।

नेटवर्क ओवरहेड के अलावा, मल्टी-वैल्यू स्टेटमेंट के अन्य लाभ पार्सिंग, लॉकिंग, आदि में हैं (भले ही टेबल लॉक ऑन tblपहले इन्सर्ट स्टेटमेंट द्वारा लिया गया हो और फिर बाकी के लेन-देन के दौरान बनाए रखा गया हो, प्रत्येक इन्सर्ट कथन को अभी भी सत्यापित करना है कि ताला लगा हुआ है, और यह सत्यापन मुफ़्त नहीं है)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.