जबकि jdbcTemplate.batchUpdate (...) चल रहा है, मैं देख सकता हूं कि डीबी पंक्ति गणना धीरे-धीरे बढ़ी है (तालिका में गिनती (*) चलकर), शुरुआत में 2k फिर 3k और 10k तक चला जाता है। 2k और 3k सटीक संख्याएं नहीं होती हैं कभी-कभी मुझे 2357 और 4567 मिलते हैं।वसंत jdbcTemaplate एक शॉट में डीबी 2 सर्वर को पूर्ण बैच आकार कैसे भेजना है?
मुझे एक शॉट में 10 के पंक्तियों (बैच आकार) की अपेक्षा की जा रही थी। मेरी समझ में अगर शुरुआत में मुझे पंक्ति गणना 0 मिलती है तो अगली पंक्ति गणना 10k होनी चाहिए। मैं प्रदर्शन कारण के लिए एक-एक करके सम्मिलित नहीं करना चाहता हूं, यही कारण है कि बैचअपडेट सुविधा का उपयोग किया जाता है और ऐसा लगता है कि यह सभी एक शॉट में भी प्रतिबद्ध नहीं है।
मैं अपने बैचसाइज के लिए केवल एक बार डीबी सर्वर पर डेटा (10k पंक्तियां) भेजना चाहता हूं। इसके लिए मुझे कुछ भी कॉन्फ़िगरेशन में निर्दिष्ट करना चाहिए?
नीचे जिस तरह से मैं jdbcTemplate बैच अद्यतन लिख रहा हूं। बैचसाइज 10k है।
public void insertRows(...) {
...
jdbcTemplate.batchUpdate(query, new BatchPreparedStatementSetter(){
@Override public void
setValues(PreparedStatement ps, int i) throws SQLException {
...
}
@Override public int getBatchSize() {
if(data == null){
return 0;
}
return data.size();
}
});
}
संपादित करें: जोड़ा गया @Transactional isertRows विधि के लिए stiil मैं एक ही व्यवहार देख सकते हैं। ट्रांसकेशनल का उपयोग करके यह 10k पंक्तियों के बाद होता है, लेकिन जब मुझे यूआर के साथ गिनती दिखाई देती है (मेरे साथ mytable से गिनती (*) का चयन करें) यह डेटा को धीरे-धीरे अपडेट किया जा रहा है (2k 4k तो 10k तक)। इसका मतलब है कि डेटा सर्वर में सर्वर पर जाता है (शायद एक अलविदा)। मैं एक शॉट में सबकुछ कैसे भेज सकता हूं। This question सुझाव देता है कि यह mysql में पुनः लिखने के लिए बैक किए गए स्टेटमेंट्स का उपयोग करके हासिल किया जाता है, क्या हमारे पास डीबी 2 में भी कुछ समान है।
मैं डेटा स्रोत कार्यान्वयन com.ibm.db2.jcc.DB2BaseDataSource
सवाल आप कहते हैं कि यह वादा नहीं करता है प्रदान की @tamasrev, मैं यह करता है कह रहा हूँ से पहले भी मैं उम्मीद – Vipin
ओह, मैं अल्पज्ञता न्याय। क्षमा करें, ध्वज हटा दिया। –
यदि मुझे लेनदेन लागू करना है तो कौन सा विशेष बैच अपडेट कर रहा है? मैं इसे एक ही अद्यतन में भी कर सकता हूं। – Vipin