मैंने निम्नलिखित व्यवहार देखा है।जावा जेडीबीसी साफ़बैच() और ढेर मेमोरी
मेरे पास एक फ़ाइल है जिसमें लगभग 3 एमबी कई हजार पंक्तियां हैं। पंक्तियों में मैं विभाजित और तैयार कथन (लगभग 250 000 बयान) बनाते हैं।
मैं क्या है:
preparedStatement
addBatch
do for every 200 rows {
executeBatch
clearBatch().
}
अंत
commit()
स्मृति उपयोग स्मृति त्रुटि से बाहर के बिना 70MB के आसपास की वृद्धि होगी पर
। क्या यह स्मृति उपयोग को कम कर सकता है? और लेनदेन व्यवहार है (यदि कोई विफल रहता है तो विफल रहता है।)। मैं executeBatch
और clearBatch
के साथ प्रतिबद्ध करके स्मृति को कम करने में सक्षम था ... लेकिन इससे कुल सेट का आंशिक सम्मिलन होगा।
यह JDBC ड्राइवर की गुणवत्ता पर बहुत निर्भर हो सकता है - जो एक हैं आप उपयोग कर रहे हैं? – skaffman
मैं 200 पंक्तियों से 10000 में बदल गया हूं और निष्पादित करने का समय अब 37 सेकंड है। ऐसा लगता है कि एक ही आकार का उपयोग किया जाता है। मैं H2 के org.h2.jdbcx.JdbcConnectionPool का उपयोग कर रहा हूं डेटा को फ़ाइल के रूप में संग्रहीत किया जाता है .. स्मृति में नहीं। मैं डेटाबेस सर्वर जैसे ओरेकल, माइस्क्ल, आदि के बिना स्थानीय एप्लिकेशन बनाने की कोशिश कर रहा हूं – Firone
क्या आप निश्चित हैं कि उच्च मेमोरी उपयोग डेटाबेस प्रसंस्करण से संबंधित है, न कि आयात से फ़ाइल I/O पर? – Timothy