การประเมินผลออนไลน์ของสามกลุ่มการเชื่อมต่อมีดังนี้:
C3P0 ใช้ทรัพยากรมากขึ้นและอาจต่ำกว่าเล็กน้อยในแง่ของประสิทธิภาพ
มีข้อบกพร่องใน DBCP ในทางปฏิบัติและในบางกรณีการเชื่อมต่อที่ว่างเปล่าจำนวนมากไม่สามารถปล่อยออกมาได้ Hibernate 3.0 ให้การสนับสนุน
Proxool มีรีวิวเชิงลบน้อยลงและแนะนำในขณะนี้และยังให้การตรวจสอบสถานะสระว่ายน้ำการเชื่อมต่อทันทีเพื่ออำนวยความสะดวกในการรั่วไหลของการเชื่อมต่อ
พูลการเชื่อมต่อ Proxool
<bean id = "proxool_datasource"> <property name = "driver-class" value = "oracle.jdbc.driver.oracledriver"/> <property name = "driver-url" value = "jdbc: oracle: thin: @localhost: 1521/ssid" คำสั่ง SQL Execution สำหรับการทดสอบ-> <property name = "HousekeepingTestSql" value = "เลือก current_date"/> <!-จำนวนขั้นต่ำของการเชื่อมต่อที่ไม่ได้ใช้งานที่ได้รับการดูแลรักษา (ค่าเริ่มต้น 2)-> <ชื่อคุณสมบัติ = "rototypecount" value = "2"/> <! หากตรวจพบการเชื่อมต่อที่ไม่ได้ใช้งานจะมีการรีไซเคิลทันที ค่าเริ่มต้นการทำลายหมดเวลาเป็น 30 วินาที)-> <property name = "housekeepingsleeptime" value = "30"/> <!-เวลากิจกรรมสูงสุด (เธรดเกินเวลานี้จะถูกฆ่าตายค่าเริ่มต้นคือ 5 นาที)-> <property name = "maximumactivetime" ค่าสูงสุด " จำนวนขั้นต่ำของการเชื่อมต่อ (ค่าเริ่มต้น 2)-> <property name = "minimumConnectionCount" value = "10"/> <!-จำนวนสูงสุดของการเชื่อมต่อ (ค่าเริ่มต้น 5)-> <property name = "MaximumConnectionCount" value = "30"/> <!
c3p0 พูลการเชื่อมต่อ
<beanid = "dataSource" class = "com.mchange.v2.c3p0.combopooledDataSource" destroy-method = "close"> <poreportname = "driverclass" value = "oracle.jdbc.driver.oracledriver" <propertyName = "JDBCURL" value = "JDBC: Oracle: Thin: @LocalHost: 1521/SSID"/> <propertyName = "user" value = "user"/> <propertyName = "รหัสผ่าน" value = "รหัสผ่าน"/> <propertyName = "maxPoolSize" value = "100"/> </ebean> <!- คุณสมบัติการกำหนดค่าของ C3P0 ผ่านคุณสมบัติเหล่านี้การควบคุมที่มีประสิทธิภาพต่าง ๆ สามารถดำเนินการได้ในแหล่งข้อมูล: การได้มาซึ่งการเชื่อมต่อในพูลเชื่อมต่อ C3P0 สร้างการเชื่อมต่อใหม่ในเวลาเดียวกัน; AcquireeretryAttempts: กำหนดจำนวนความพยายามซ้ำ ๆ เพื่อให้ได้มาหลังจากความล้มเหลวในการรับการเชื่อมต่อใหม่จากฐานข้อมูลค่าเริ่มต้นคือ 30; AcquireretryDelay: ช่วงเวลาระหว่างการเชื่อมต่อสองครั้งหน่วยมิลลิวินาทีค่าเริ่มต้นคือ 1,000; AutoCommitonClose: เมื่อการเชื่อมต่อถูกปิดการดำเนินการที่ไม่มีข้อผูกมัดทั้งหมดจะถูกย้อนกลับไปตามค่าเริ่มต้น ค่าเริ่มต้นเป็นเท็จ AutomatictestTable: C3P0 จะสร้างตารางว่างที่มีชื่อว่าทดสอบและใช้คำสั่งค้นหาของตัวเองสำหรับการทดสอบ หากมีการกำหนดพารามิเตอร์นี้คุณสมบัติ PreferreDTestQuery จะถูกละเว้น คุณไม่สามารถทำอะไรได้ในตารางทดสอบนี้มันจะใช้สำหรับการทดสอบ C3P0, เริ่มต้นเป็น NULL; breakafteracquirefailure: ความล้มเหลวในการรับการเชื่อมต่อจะทำให้เธรดทั้งหมดรอการเชื่อมต่อเพื่อโยนข้อยกเว้น อย่างไรก็ตามแหล่งข้อมูลยังคงใช้ได้และพยายามเชื่อมต่อในครั้งต่อไปที่คุณเรียก getConnection () หากตั้งค่าเป็นจริงแหล่งข้อมูลจะประกาศว่ามันถูกตัดการเชื่อมต่อและปิดอย่างถาวรหลังจากความพยายามที่ล้มเหลวในการรับการเชื่อมต่อ ค่าเริ่มต้นเป็นเท็จ CheckOutTimeOut: เมื่อใช้พูลการเชื่อมต่อแล้วการโทรไคลเอนต์ GetConnection () และรอเวลาเพื่อรับการเชื่อมต่อใหม่ หลังจากหมดเวลา Sqlexception จะถูกโยนลงไป หากตั้งค่าเป็น 0 มันจะรออย่างไม่มีกำหนด หน่วยมิลลิวินาทีเริ่มต้นคือ 0; CONNECTIONTESTERCLASSNAME: การเชื่อมต่อการทดสอบโดยใช้ CONNECTIONTESTER หรือ QUERYCONNECTIONTESTER ชื่อคลาสจะต้องตั้งค่าเป็นชื่อที่มีคุณสมบัติครบถ้วน ค่าเริ่มต้นคือ com.mchange.v2.c3p0.impl.defaultconnectiontester; IdleConnectionTestPeriod: ใช้เวลากี่วินาทีในการตรวจสอบการเชื่อมต่อที่ไม่ได้ใช้งานในพูลการเชื่อมต่อทั้งหมดค่าเริ่มต้นคือ 0 เพื่อระบุว่าไม่ได้ตรวจสอบ InitialPoolSize: จำนวนการเชื่อมต่อที่สร้างขึ้นระหว่างการเริ่มต้นควรมีมูลค่าระหว่าง minpoolsize และ maxpoolsize ค่าเริ่มต้นคือ 3; MaxidLetime: เวลาว่างสูงสุดการเชื่อมต่อที่เกินเวลาว่างจะถูกยกเลิก หากเป็น 0 หรือลบมันจะไม่ถูกทิ้ง ค่าเริ่มต้นคือ 0; MaxPoolSize: จำนวนการเชื่อมต่อสูงสุดที่เก็บไว้ในพูลเชื่อมต่อ ค่าเริ่มต้นคือ 15; MaxStatements: พารามิเตอร์มาตรฐานของ JDBC ใช้เพื่อควบคุมจำนวนของ PreparedStatements ที่โหลดในแหล่งข้อมูล แต่เนื่องจากคำสั่ง Precache เป็นของการเชื่อมต่อเดียวมากกว่าพูลการเชื่อมต่อทั้งหมด ดังนั้นการตั้งค่าพารามิเตอร์นี้ต้องพิจารณาปัจจัยหลายอย่าง หากทั้ง maxstatements และ maxstatementsperconnection คือ 0 แคชจะถูกปิด ค่าเริ่มต้นคือ 0; MaxStatementsPerConnection: จำนวนสูงสุดของคำสั่งแคชที่การเชื่อมต่อเดียวในพูลเชื่อมต่อมี ค่าเริ่มต้นคือ 0; NUMHELPERTHREADS: C3P0 ดำเนินการแบบอะซิงโครนัสและการดำเนินการ JDBC ช้าจะเสร็จสมบูรณ์ผ่านกระบวนการช่วยเหลือ การขยายการดำเนินงานเหล่านี้สามารถปรับปรุงประสิทธิภาพได้อย่างมีประสิทธิภาพและการดำเนินการหลายอย่างจะดำเนินการพร้อมกันผ่านหลายเธรด ค่าเริ่มต้นคือ 3; PreferredTestquery: กำหนดคำสั่งทดสอบว่าการทดสอบการเชื่อมต่อทั้งหมดจะถูกดำเนินการ พารามิเตอร์นี้สามารถปรับปรุงความเร็วในการทดสอบได้อย่างมีนัยสำคัญเมื่อใช้การทดสอบการเชื่อมต่อ ตารางที่ทดสอบจะต้องมีอยู่ในเวลาของแหล่งข้อมูลเริ่มต้น ค่าเริ่มต้นเป็นโมฆะ PropertyCycle: จำนวนสูงสุดของวินาทีที่จะรอก่อนที่ผู้ใช้จะแก้ไขพารามิเตอร์การกำหนดค่าระบบ ค่าเริ่มต้นคือ 300; TestConnectionOnCheckout: โปรดใช้เฉพาะเมื่อจำเป็นเนื่องจากการใช้ประสิทธิภาพสูง หากตั้งค่าเป็นจริงความถูกต้องของมันจะได้รับการตรวจสอบในการส่งการเชื่อมต่อแต่ละครั้ง ขอแนะนำให้ใช้ IdleConnectionTestPeriod หรือ AutomatictestTable เพื่อปรับปรุงประสิทธิภาพของการทดสอบการเชื่อมต่อ ค่าเริ่มต้นเป็นเท็จ TestConnectiononCheckin: หากตั้งค่าเป็นจริงความถูกต้องของการเชื่อมต่อจะถูกตรวจสอบในขณะที่ได้รับการเชื่อมต่อ ค่าเริ่มต้นเป็นเท็จ -
พูลการเชื่อมต่อ DBCP
<beanid = "dbcp_datasource" class = "org.apache.commons.dbcp.basicDataSource"> <portsName = "DriverClassName" value = "Oracle.jdbc.driver.oracledRiver"> </property> <propertyName = "url" value = "JDBC: Oracle: Thin: @LocalHost: 1521/SSID"> </property> <propertyName = "ชื่อผู้ใช้" value = "ผู้ใช้"> </คุณสมบัติ> <propertyName = "รหัสผ่าน" value = "รหัสผ่าน"> <propertyName = "maxactive" value = "50"> </property> <propertyName = "maxactive" value = "50"> </property> <propertyName = "MaxIdle" value = "20"> </property> <porementName = "minidle" value = "5"> คำอธิบายค่าเริ่มต้นขนาด: จำนวนเริ่มต้นของการเชื่อมต่อเมื่อเริ่มต้นการเชื่อมต่อพูล maxactive: ค่าสูงสุดของการเชื่อมต่อพูลพูล Maxidle: ค่าไม่ได้ใช้งานสูงสุด minidle: ค่าว่างขั้นต่ำ maxwait: การตั้งค่าการเชื่อมต่อสูงสุดเวลารอ ->