HikariCP
HikariCPはBoneCPより速い速度を誇るDB Connection Poolです。(HikariCP公式サイト参照)BoneCPの場合は、Hibernate 4.xバージョンからは支援が曖昧になった気がしますが、 HikariCPはHibernateとの統合jarが出るなど、HikariCPを押している気がします。

HikariCP設定
・Maven設定Java 8 maven artifact:Java 6 and Java 7 maven artifact: com.zaxxer HikariCP 2.2.5 compile com.zaxxer HikariCP-java6 2.2.5 compile
・Spring + HikariCP
@Configurationを利用したJava Config設定
@Bean(destroyMethod = "shutdown") public DataSource dataSource() { HikariConfig config = new HikariConfig(); config.setDataSourceClassName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource"); config.addDataSourceProperty("serverName", "localhost"); config.addDataSourceProperty("port", "3306"); config.addDataSourceProperty("databaseName", "test"); config.addDataSourceProperty("user", "root"); config.addDataSourceProperty("password", "test"); config.addDataSourceProperty("zeroDateTimeBehavior", "convertToNull"); config.addDataSourceProperty("useUnicode", "true"); config.addDataSourceProperty("characterEncoding", "utf8"); config.addDataSourceProperty("autoReconnect", "true"); config.addDataSourceProperty("cachePrepStmts", "true"); config.addDataSourceProperty("prepStmtCacheSize", "250"); config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048"); config.addDataSourceProperty("useServerPrepStmts", "true"); config.setMinimumIdle(20); config.setMaximumPoolSize(20); config.setJdbc4ConnectionTest(true); config.setConnectionInitSql("SELECT 1"); HikariDataSource dataSource = new HikariDataSource(config); return dataSource; }・hibernate.cfg.xmlファイル設定
com.zaxxer.hikari.hibernate.HikariConnectionProvider com.mysql.jdbc.jdbc2.optional.MysqlDataSource jdbc:mysql://localhost/test root test true 250 2048 true
以下はHikariCPのpropertyの説明になります。
autoCommit (default : true)
connectionが終了されたり、poolが返却される時、connectionに属しているtransactionをcommitするかどうかを決めます。readOnly (default : false)
database connectionをreadOnly modeでopenします。この設定はdatabaseが支援してくれないとreadOnlyではない状態でopenされるため、支援databaseリストを確認する必要があります。
transactionIsolation (default : none)
java.sql.Connectionに指定されたTransaction Isolationを指定します。Transaction Isoluationは以下になります。
・Connection.TRANSACTION_NONE : transactionを支援しません。
・Connection.TRANSACTION_READ_UNCOMMITTED : 他のtransactionからデータを読み込んで来る時、更新された(まだcommitされてなくても)値(dirty value)を読み込みます。
・Connection.TRANSACTION_READ_COMMITTED : 他のtransactionからデータを読み込んで来る時、変更されてない(Commitする前)値を読み込みます。
・Connection.TRANSACTION_REPEATABLE_READ : 同じtransactionの中で、同じ値を読み込む時に、変更される前(他のtransactionで、commitされたとしても)の値を読み込みます。TRANSACTION_READ_UNCOMMITTEDと一緒に使用できません。
・Connection.TRANSACTION_SERIALIZABLE : Dirty Read、Non-repeatable Read、Phantom Readが制御されます。
Default値はそれぞれのDriver vendorのJDBCDriverで支援しているTransaction Isoluationに従います。(noneで設定した時)
transactionに関してはこちらを参照してください。
category (default : none)
connectionで接続されるcategoryを決めます。値が設定されてない場合、JDBC Driverで設定された基本categoryが指定されます。
connectionTimeout(default: 30000 - 30 seconds)
connectionが接続される時のtimeout out時間を設定します。この時間以内にconnectionが接続されなかった場合、SQLExceptionが発生します。
idleTimeout(default : 600000 - 10 minutes)
connection Poolによって確保されたconnectionのmaximum idle timeを決めます。connection Poolによって確保されたconnectionが使われずに、Poolでこの時間の間、待機している場合、connectionをDBに返却します。
値を0に設定した場合、確保されたconnectionを絶対返却しません。
maxLifetime(default : 1800000 - 30 minutes)
connection Poolによって確保されたconnectionの最大Life Timeを決めます。connectionを取得した後、この時間以上になった場合、最近使われたconnectionでも、connectionをcloseします。
使用中のconnectionはcloseしません。(connectionの使用が終わったらすぐcloseされます。) HikariCPではこの値を30~60 minutesに設定することをお勧めします。
この値を0にした場合、lifetimeは無制限になります。
leakDetectionThreshold (default : 0)
connectionPoolから返却されたconnectionが正しく返却されたかどうかをチェックするthread数を指定します。この値を0に指定した場合、leak detectionはdisableされます。
jdbc4ConnectionTest (default : true)
connectionされた後、Connection.isValid() methodを呼び出しconnectionが正常かどうかを確認します。このpropertyは次のconnectionTestQueryに密接な影響をうけます。
connectionTestQuery (default : none)
Connection.isValid() methodが使えない‘legacy’ databaseの為にTEST用の簡単なqueryの指定ができます。(ex: VALUES 1)
jdbc4ConnectionTestが使える場合は、jdbc4ConnectionTestを使った方がいいです。
connectionInitSql (default : none)
新しいconnectionが生成され、Poolに追加される前に実行されるSQL queryを指定します。dataSourceClassName (default : none)
JDBC driverで支援するdataSourceClassNameを指定します。この値はdriverClassNameが指定された場合は、指定する必要がありません。dataSource (default : none)
使用者が作ったdataSourceをPoolによってwrappedしたい場合は、この値を指定します。HikariCPはこの文字列を利用してreflectionを通じてdataSourceを生成します。
この値が設定された場合、dataSourceClassName, driverClassNameに設定された値は無視されます。
driverClassName
HikariCPで使用するDriverClassを指定します。この値が指定された場合、jdbcUrlを必ず指定しなければなりません。
jdbcUrl
jdbcUrlを指定します。driverClassNameが指定された場合、jdbcUrlを指定する必要があります。minimumIdle (default : maximumPoolSize)
connection Poolで維持する最小限のconnection数を指定します。HikariCPでは最高のperformanceの為に、maximumPoolSizeとminimumIdleの値は同じにしてconnection Poolの大きさをfixすることをお勧めしています。
maximumPoolSize
connection Poolで使用する最大のconnection数を指定します。この部分は運営環境と開発環境での多くのテストが必要です。
username
Connectionを取得するための認証ユーザ名を指定します。password
usernameのパスワードを指定します。poolName (default : auto-generated)
loggingとJMX managementで出力されるpoolの名前を指定します。registerMbeans (default : false)
JMX management Beansに登録されるかどうかを決めます。参考URL
http://stackoverflow.com/questions/20955875/is-tomcat-7-jdbc-connection-pool-good-enough-for-production-and-how-is-it-comhttps://github.com/brettwooldridge/HikariCP
Borgata Hotel Casino & Spa - JTM Hub
返信削除The Borgata Hotel 동해 출장마사지 Casino & Spa 충주 출장샵 is a luxurious five-star hotel located within the marina resort of Atlantic City in 강릉 출장마사지 the 경상남도 출장안마 marina district of 포천 출장샵
Click to see the code!
To insert emoticon you must added at least one space before the code.