試すことができること:
-
setMaxWait(-1)
BasicDataSourceで。これは、接続を無期限に待機するように指示します。 -
wait_timeout
を確認してください MySQLサーバーではデフォルトの8時間に設定されています。 -
?autoReconnect=true
を設定します JDBCURLで -
setTestOnBorrow(true)
BasicDataSourceで。これにより、古い接続が渡されるのを防ぐことができますが、アプリにオーバーヘッドが追加されます(ただし、このような長い単一のクエリを既に取得している場合は、おそらくその部分に気付くことさえありません)。
一般的に、接続を再利用し続けるのは悪い考えだと思います。私にとって、プールを持つことのポイントは、私がそれをする必要がないということです。
クエリはトランザクションですか?本当に長いクエリがメジャーテーブルをロックしているのでしょうか?