बारीकियों को संक्षेप में बताने के लिए: हमें लगभग 5 मिलियन पंक्तियों को एक विक्रेता (ओरेकल) डेटाबेस में बदलने की आवश्यकता है। OracleBulkCopy
(ODP.NET) का उपयोग करके 500k पंक्तियों के बैचों के लिए सब कुछ बहुत अच्छा हो जाता है , लेकिन जब हम 5M तक स्केल करने की कोशिश करते हैं, तो 1M मार्क को हिट करते ही प्रदर्शन क्रॉल करना शुरू कर देता है, क्रमिक रूप से धीमा हो जाता है क्योंकि अधिक पंक्तियाँ लोड होती हैं, और अंततः 3 घंटे या तो के बाद बाहर बार।
मुझे संदेह है कि यह मेज पर एक प्राथमिक कुंजी से संबंधित है, लेकिन मैं जानकारी के लिए ओरेकल मंचों और स्टैक ओवरफ्लो को पीछे छोड़ रहा हूं और बहुत कुछ जो मैं विरोधाभास पढ़ रहा हूं, वह भी (बहुत सारे पद एक -दूसरे के विपरीत प्रतीत होते हैं ) । मैं उम्मीद कर रहा हूं कि कोई व्यक्ति प्रक्रिया के बारे में कुछ करीबी सवालों पर सीधे रिकॉर्ड सेट कर सकता है:
क्या
OracleBulkCopy
क्लास पारंपरिक या प्रत्यक्ष-पथ लोडिंग का उपयोग करता है ? क्या कोई तरीका है जिससे मैं इसकी पुष्टि कर सकता हूं, एक तरीका या दूसरा?यह मानते हुए कि यह प्रत्यक्ष-पथ लोडिंग का उपयोग करता है : क्या यह सच है कि ओरेकल लोड के दौरान सभी इंडेक्सों को स्वचालित रूप से अनुपयोगी बना देता है और उन्हें ऑनलाइन बाद में वापस रखता है? मैंने इस आशय के कई कथन पढ़े हैं, लेकिन फिर से, इसकी पुष्टि नहीं कर सकता।
यदि # 2 सत्य है, तो क्या इससे कोई फर्क पड़ता है कि मैं थोक कॉपी ऑपरेशन शुरू करने से पहले तालिका में कौन से सूचकांक हैं? यदि हां, तो क्यों?
# 3 से संबंधित, क्या कोई व्यावहारिक अंतर है, सामान्य रूप से, एक अनुपयोगी सूचकांक के साथ थोक लोडिंग के बीच बनाम वास्तव में लोड से पहले सूचकांक को गिराना और बाद में इसे फिर से बनाना है?
यदि # 2 सही नहीं है, या यदि कुछ ऐसे कैविएट हैं जिन्हें मैं नहीं समझ पा रहा हूं, तो क्या इससे थोक भार से पहले सूचकांक को स्पष्ट रूप से अनुपयोगी बनाने के लिए कोई फर्क पड़ेगा और फिर स्पष्ट रूप से बाद में इसका पुनर्निर्माण करना होगा?
क्या इंडेक्स बिल्ड के अलावा भी कुछ और है, जिससे उत्तरोत्तर धीमी गति से बढ़ने के लिए थोक कॉपी ऑपरेशन हो सकता है क्योंकि अधिक से अधिक रिकॉर्ड जोड़े जाते हैं? (शायद लॉगिंग के साथ कुछ करना है, हालांकि मुझे उम्मीद है कि थोक संचालन लॉग नहीं हैं?)
अगर वास्तव में पीके / इंडेक्स को छोड़ने से अलग प्रदर्शन करने का कोई दूसरा तरीका नहीं है , तो मैं यह सुनिश्चित करने के लिए क्या कदम उठा सकता हूं कि इंडेक्स पूरी तरह से गायब न हो, यानी अगर डेटाबेस से कनेक्शन खो गया है इस प्रक्रिया के बीच में?