Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SqlBulkCopy के लिए अनुशंसित बैच आकार क्या है?

मेरे पास मेरे 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 से ऊपर ने गति में कोई सुधार नहीं दिखाया।

यह कोई फ़ॉर्मूला नहीं है, बल्कि आपके उपयोग के लिए एक और डेटा बिंदु है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर डेटाबेस में उपयोगकर्ता-परिभाषित तालिकाओं की संख्या की गणना करने के 5 तरीके

  2. SQL सर्वर में डेटाबेस में सभी तालिकाओं को छोटा करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 55

  3. SQL में कॉलम पर मानों के सभी संभावित संयोजन लौटाएं

  4. SQL सर्वर 2008 में सबसे खराब प्रदर्शन करने वाले प्रश्नों को कैसे खोजें?

  5. SQL सर्वर में OFFSET FETCH NEXT का उपयोग करके पेजिंग लागू करना