हम java6/hibernate/c3p0/postgresql ढेर चला रहे हैं। हमारा जेडीबीसी चालक 8.4-701.jdbc3क्या मुझे c3p0 स्टेटमेंट पूलिंग सक्रिय करना चाहिए?
मेरे पास तैयार वक्तव्य के बारे में कुछ प्रश्न हैं। मैंने Prepared Statements
पर उत्कृष्ट दस्तावेज़ पढ़ा है लेकिन मुझे अभी भी एक प्रश्न है कि cgpqll के साथ c3p0 को कॉन्फ़िगर कैसे करें।
समय हम
c3p0.maxStatements = 0
c3p0.maxStatementsPerConnection = 0
है मेरी समझ में तैयार बयान और बयान पूलिंग दो अलग बातें हैं:
हमारे हाइबरनेट ढेर तैयार बयानों उपयोग करता है। Postgresql निष्पादन योजना कैशिंग कर रहा है। अगली बार एक ही कथन का उपयोग किया जाता है, postgresql निष्पादन योजना का पुन: उपयोग करता है। यह डीबी के अंदर समय नियोजन बयान बचाता है।
इसके अतिरिक्त c3p0 "java.sql.PreparedStatement" के जावा उदाहरणों को कैश कर सकता है जिसका अर्थ है कि यह जावा ऑब्जेक्ट को कैशिंग कर रहा है। तो
c3p0.maxStatementsPerConnection = 100 का उपयोग करते समय यह 100 से अधिक विभिन्न
ऑब्जेक्ट्स पर कैश करता है। यह वस्तुओं को बनाने पर समय बचाता है, लेकिन इसके पास पोस्टग्रेस्क्ल डेटाबेस और इसके तैयार बयान के साथ कुछ लेना देना नहीं है।
सही?
हम के बारे में 100 विभिन्न बयानों का उपयोग के रूप में मैं c3p0.maxStatementsPerConnection = 100
लेकिन c3p0 डॉक्स कहना c3p0 known shortcomings
में वक्तव्य पूलिंग की भूमि के ऊपर बहुत अधिक है स्थापित करेगा। उन ड्राइवरों के लिए जो तैयार प्रीटेक्शंस का महत्वपूर्ण प्रीप्रोकैसिंग करते हैं, पूलिंग ओवरहेड किसी भी बचत से अधिक है। इस प्रकार स्टेटमेंट पूलिंग को डिफ़ॉल्ट रूप से बंद कर दिया गया है। यदि आपका चालक प्रीप्रोसेस प्रीपेडस्टेटमेंट्स, विशेष रूप से यदि यह आरडीबीएमएस के साथ आईपीसी के माध्यम से ऐसा करता है, तो आपको शायद द्वारा महत्वपूर्ण प्रदर्शन लाभ पर स्टेटमेंट पूलिंग चालू कर देगा। (यह कॉन्फ़िगरेशन प्रॉपर्टी अधिकतम स्टेटमेंट्स या maxStatementsPerConnection को मान शून्य से अधिक मानकर सेट करें।)।
तो: क्या c3p0 और Postgresql के साथ maxStatementsPerConnection को सक्रिय करना उचित है? क्या इसका वास्तविक लाभ सक्रिय है?
तरह का संबंध Janning
ग्रेट उत्तर !! आपके विस्तृत स्पष्टीकरण के साथ मैं कुछ परीक्षण चलाने में सक्षम था। वास्तव में: c3p0 स्टेटमेंट पूलिंग को सक्रिय करना उचित है। मेरे बयान को हर बार पार्स और योजनाबद्ध करने से पहले, अब वे केवल बाध्य और निष्पादित होते हैं। लेकिन अगर आपका डेटा बदलता है और पुरानी योजनाएं इष्टतम प्रदर्शन नहीं करती हैं तो सावधान रहें। मुझे अभी तक पता नहीं है कि postgresql समय-समय पर तैयार की गई है। आपकी मदद के लिए बहुत बहुत धन्यवाद !! – Janning
ग्रेट उत्तर! असल में मैं हमेशा तैयार किए गए स्टेटमेंट कार्यान्वयन के बारे में उलझन में हूं और इसके लाभों के लिए संदिग्ध हूं जैसे सभी ने मुझे बताया। – Chao