java - वसंत JDBC कनेक्शन पूल सर्वोत्तम प्रथाओं




spring connection-pooling (3)

BoneCP के विकल्प के रूप में, क्या आपने शायद Oracle के अपने डेटाबेस कनेक्शन पूल की कोशिश की है?

मुझे पिछले कुछ हफ़्तों से अच्छे अनुभव हैं, इसलिए यह एक शॉट देने के लायक हो सकता है - यह भी, मुझे लगता है कि ओरेकल को एक कनेक्शन पूल बनाने के बारे में एक या दो पता होगा, खासकर जब अपने स्वयं के डेटाबेस के साथ जोड़ा जाता है।

<bean id="dataSource" class="oracle.jdbc.pool.OracleConnectionPoolDataSource">
    <property name="URL" value="${jdbc.url}" />
    <property name="user" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
</bean>

अद्यतन : इसके अलावा, यदि आप नवीनतम Oracle JDBC ड्राइवर (11.2.0.1+) में से एक का उपयोग कर रहे हैं, तो आप नए यूनिवर्सल कनेक्शन पूल को आज़माना चाह सकते हैं। OracleConnectionPoolDataSource इस पूल के पक्ष में आधिकारिक तौर पर पदावनत किया जा रहा है। हालांकि, कुछ उपयोगकर्ताओं ने इसका उपयोग करने में त्रुटियों की सूचना दी है, इसलिए यह बहुत जल्दी हो सकता है। मैं ओरेकल के नवीनतम JDBC ड्राइवरों का उपयोग करने की स्थिति में हूं, इसलिए जैसे ही इसकी कोई जानकारी होगी, मैं इसे आजमाऊंगा और अपडेट करूंगा।

इस SO थ्रेड पर अधिक जानकारी: Oracle UCP

मेरे पास एक बुनियादी स्प्रिंग JDBC अनुप्रयोग है जिसमें एक बहुत ही सुंदर विन्यास है:

<bean id="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
   <property name="driverClassName" value="oracle.jdbc.OracleDriver"/>
   <property name="url" value="jdbc:oracle:thin:@1.1.1.1:1521:XXX"/>
   <property name="username" value="username"/>
   <property name="password" value="password"/>
</bean>

<bean id="dbThing" class="com.DbThing">
   <property name="dataSource" ref="myDataSource"/>
</bean>

मैं एक कनेक्शन पूल शुरू करना चाहता हूं, और एसओ पर कई थ्रेड्स पढ़ने के बाद मैं थोड़ा उलझन में हूं कि किस पूलिंग लाइब्रेरी का उपयोग करना है।

जिन पुस्तकालयों का SO पर अधिक क्रेडिट है, वे C3P0 और DBCP । चूंकि मैं ओरेकल का उपयोग कर रहा हूं, इसलिए मैं ड्राइवर द्वारा पेश किए गए डेटा स्रोत का भी उपयोग कर सकता हूं।

मैं समझता हूं कि और भी लाइब्रेरी उपलब्ध हैं - उदाहरण के लिए नई अपाचे टोमैट 7 पूलिंग लाइब्रेरी।

क्या कोई पुस्तकालय है जिससे मुझे वास्तव में बचना चाहिए?

क्या कोई अनुशंसित कॉन्फ़िगरेशन है जिसे मुझे किसी दी गई लाइब्रेरी के साथ उपयोग करना चाहिए?

कोई "युद्ध कहानी" जिसे आप साझा करना चाहते हैं?


C3PO और DBCP विकास ज्यादातर इसलिए रुका हुआ है क्योंकि वे परिपक्व हैं। मैंने देखा है कि ये दोनों ड्राइवर प्रति सेकंड सैकड़ों लेनदेन का समर्थन करने में सक्षम हैं।

Tomcat पूल एक reworked और अद्यतन DBCP ड्राइवर है। MyBatis 3.0 में यह स्वयं का पूलिंग कार्यान्वयन है, जो कोड निरीक्षण के आधार पर, ठोस लगता है। अंत में, BoneCP है जो सबसे अच्छा प्रदर्शन करने का दावा करता है। मैंने इनमें से किसी भी परियोजना पर अभी तक उपयोग नहीं किया है।

संभवतः सबसे अच्छी सलाह यह है कि उनमें से किसी को भी इसका परीक्षण करें। वसंत बाद में बाहर स्वैप करना आसान बनाता है।


BoneCP दावा कर रहा है, लेकिन फिर HiKariCP नाम से एक नया टूल पेश किया गया है, HiKariCP कई कमियां HiKariCP हैं, जो पास टूल में मौजूद थे जिन्हें आप application-context.xml में परिवर्तन द्वारा नीचे कॉन्फ़िगर कर सकते हैं। application-context.xml

<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
  <property name="maximumPoolSize" value="10" />
  <property name="minimumPoolSize" value="2" />
  <property name="dataSourceClassName" 
            value="oracle.jdbc.pool.OracleDataSource" />
  <property name="dataSourceProperties" ref="props" />
  <property name="poolName" value="springHikariCP" />
</bean>

<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource">
      <constructor-arg ref="hikariConfig" />
</bean>

<util:properties id="props" location="classpath:datasource.properties"/>

जहाँ database.properties आपको नीचे की तरह डेटाबेस का विवरण प्रदान करना चाहिए

 url=jdbc:oracle:thin:@IP:port:SID/Databasename
 user=usernmae
 password=password

उचित डेमो के लिए आप इस लिंक का उपयोग कर सकते हैं





apache-commons-dbcp