मेरे पास oracle stored proc
है जिसे मेरे जावा प्रोग्राम से कॉल करने की आवश्यकता है। मैंने संग्रहित प्रो को पैरामीटर पास करने के लिए CallableStatement
का उपयोग किया था। मैं ऑरैकल पतली चालक का उपयोग कर रहा हूं (प्रासंगिक जेएनडीआई एंट्री के खिलाफ वेब लॉजिक सर्वर में कॉन्फ़िगर किया गया)। इस संग्रहित प्रो में कोई आउट मान नहीं है। यह संग्रहीत proc एक संख्यात्मक मान स्वीकार करता है और प्राप्त मूल्य के आधार पर डीबी में बहुत से अद्यतन करता है।तैयार स्टेमेंटमेंट, कॉल करने योग्य स्टेटमेंट और प्रदर्शन विचार
मुझे एक कनेक्शन ऑब्जेक्ट मिलता है और फिर इस संग्रहित प्रो को लूप में कॉल करें (20 संख्याओं को पार करने के लिए 20 बार)। जब मैं सीधे इस संग्रहित प्रो को ऑरैक क्लाइंट से कॉल करता हूं, तो निष्पादन 2-3 सेकंड में पूरा हो जाता है। हालांकि व्यवहार मेरे जावा कोड से अनुमानित नहीं है। कुछ कॉल पूर्ण होने के लिए 30-40 सेकंड भी लेते हैं।
मैंने के बजाय PreparedStatement
का उपयोग करने की कोशिश की और मामूली प्रदर्शन सुधार (हालांकि व्यवहार अभी भी असंगत है) देख सकता है।
- उस में मेरे मामले का उपयोग करने के
PreparedStatement
बजायCallableStatement
यह देखते हुए कि storedproc किसी भी बाहर पैरामीटर नहीं है ठीक है? - क्या कोई कारण है कि
PreparedStatement
पर कुछ प्रदर्शन लाभCallableStatement
पर है या क्या ऐसा कुछ है जिसे मैंने गलत तरीके से देखा होगा? - क्या इस प्रदर्शन समस्या को हल करने के लिए कोई बेहतर तरीका है?
क्या आप कोड पोस्ट कर सकते हैं? वैकल्पिक रूप से, पुष्टि करें कि प्रत्येक कनेक्शन प्रत्येक पुनरावृत्ति के साथ स्थापित नहीं किया जा रहा है (बार-बार एक कनेक्शन का उपयोग करने के बजाय), और पुष्टि करें कि आप प्रत्येक पुनरावृत्ति के साथ 'conn.prepareCall() 'को कॉल नहीं कर रहे हैं (केवल' .setInt () 'और' .execute() 'लूप में)। – Matt
आप अपनी संग्रहीत प्रक्रिया को एक से अधिक बार कॉल करते हैं, सही? क्या आपने बैच कॉल का उपयोग करने की कोशिश की है? http://docs.oracle.com/javase/1.3/docs/guide/jdbc/getstart/callablestatement.html देखें 7.1.3 –
20 कॉल करने के बजाय, एक अनामित पीएल/एसक्यूएल ब्लॉक क्यों न करें (शुरू करें ... कॉल प्रो ... कॉल प्रो ...... अंत;) जो आपकी संग्रहीत प्रो 20 बार कॉल करता है और अज्ञात ब्लॉक के साथ डेटाबेस में एक कॉल करता है। – GriffeyDog