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 포천 출장샵