मेरे पास मेरे SQL सर्वर इंस्टेंस के समान भौतिक सर्वर पर एक आयात उपयोगिता है। कस्टम IDataReader
. का उपयोग करना , यह फ्लैट फाइलों को पार्स करता है और उन्हें SQLBulkCopy
. का उपयोग करके डेटाबेस में सम्मिलित करता है . एक विशिष्ट फ़ाइल में लगभग 6M योग्य पंक्तियाँ होती हैं, दशमलव और लघु पाठ के औसतन 5 स्तंभ, प्रति पंक्ति लगभग 30 बाइट्स।
इस परिदृश्य को देखते हुए, मुझे गति और स्मृति खपत का सबसे अच्छा समझौता करने के लिए 5,000 का बैच आकार मिला। मैंने 500 से शुरुआत की और बड़े के साथ प्रयोग किया। मैंने पाया कि 5000, 500 की तुलना में औसतन 2.5 गुना तेज है। 6 मिलियन पंक्तियों को सम्मिलित करने में 5,000 के बैच आकार के साथ लगभग 30 सेकंड और 500 के बैच आकार के साथ लगभग 80 सेकंड लगते हैं।
10,000 औसत दर्जे का तेज नहीं था। 50,000 तक बढ़ने से गति में कुछ प्रतिशत अंकों का सुधार हुआ लेकिन यह सर्वर पर बढ़े हुए भार के लायक नहीं है। 50,000 से ऊपर ने गति में कोई सुधार नहीं दिखाया।
यह कोई फ़ॉर्मूला नहीं है, बल्कि आपके उपयोग के लिए एक और डेटा बिंदु है।