【Java】DB Connection Pool ~ HikariCP / 基本編 ~


■ 使用上の注意

 * HikariDataSource#close() は、システム終了後にコールすること
★ 重要 ★
 * HikariDataSource#getConnection()から得たコネクションについては、使用後即 close() をコールしておいた方がいい
  => これをしていなかったせいで、maximumPoolSize の デフォルト 10 を使い切ってしまい、
     その結果、コネクションタイムアウトして落ちていた
  => システム終了していないのに、close() を呼んでしまっていいの?って思ったが、
     以下の「参考文献」が参考になった

参考文献

https://stackoverflow.com/questions/25367261/best-approach-for-returning-connection-objects-to-hikaricp-pool?rq=1
As with most connection pools, Hikari doesn't give you an actual JDBC Connection when you ask for one.
# 多くのコネクションプールと同様に、Hikari は実際のJDBCのコネクションを提供している訳じゃありません。

What it does instead is give you a proxy that implements the Connection interface.
# その代わりに何がコネクションインターフェイスを実装したプロキシを提供するのか

In the case of Hikari - it's a ConnectionProxy object.
# Hikariの場合、それはConnectionProxy オブジェクトです。

... 略 ...

If you look at the source code for Hikari, at the ConnectionProxy class in particular,
 you will see that the close() method is very different from the standard one. The code reads as:
# Hikariのソースコード(特にConnectionProxy クラス)をみてみれば
# close() が標準のものとは、とても異なっていることが分かるでしょう
https://github.com/brettwooldridge/HikariCP/blob/dev/src/main/java/com/zaxxer/hikari/pool/ProxyConnection.java
Mark the connection as closed, do cleanup, reset underlying connection state and params.
# コネクションが閉じたということは、クリーンアップ、下層のコネクションの状態とパラメータをリセットすることを
# 覚えておいてください

Hence, simply calling close() will just clean and return the connection to the pool.
# そのため、単純にclose()をよぶことは、ただクリーンにし、コネクションをプールに返します

■ 設定値

公式サイト
https://github.com/brettwooldridge/HikariCP

maximumPoolSize

デフォルト:10
使用する最大のconnection数を指定

connectionTimeout

デフォルト:30000 (30 seconds)
connectionが接続される時のタイムアウト時間を設定

idleTimeout

デフォルト:600000 (10 minutes)
本設定値の間、Pool内のconnectionが使われなかった場合、connectionをDBに返却

参考文献

http://time-complexity.blogspot.jp/2015/03/db-connection-pool-hikaricp.html

関連記事

Java】DB Connection Pool ~ HikariCP / 導入編 ~

https://blogs.yahoo.co.jp/dk521123/37397210.html

Java】DB Connection Pool ~ HikariCP / 複数DB編 ~

https://blogs.yahoo.co.jp/dk521123/37452804.html