MySQLのJDBCドライバーであるConnector/Jですが、どのようなプロパティを設定した方がいいのかよく忘れるので。
いい情報はないかな?と思ったら、HikariCPのWikiによくまとまっていました。
MySQL Configuration · brettwooldridge/HikariCP Wiki · GitHub
記載時点(Connector/J 8.0.32時点)で、以下のようなプロパティが記載されています。
※Connector/Jのプロパティとそのまま対比できるように整形しました
prepStmtCacheSize=250 prepStmtCacheSqlLimit=2048 useServerPrepStmts=true useLocalSessionState=true rewriteBatchedStatements=true cacheResultSetMetadata=true cacheServerConfiguration=true elideSetAutoCommits=true maintainTimeStats=false
prepStmtCacheSize
- Prepared Statementのキャッシュ数。デフォルトは25
cachePrepStmts
をtrue
にする必要あり
prepStmtCacheSqlLimit
- キャッシュするPrepared Statementの(SQL文の)長さ
cachePrepStmts
をtrue
にする必要あり- デフォルトは256
cachePrepStmts
- 有効(
true
)にするとクライアントサイドまたはサーバーサイドのPrepared Statementの適合性をチェックする(キャッシュの有効化) - デフォルトは無効(
false
)
- 有効(
useServerPrepStmts
- 有効(
true
)にするとサーバーサイドPrepared Statementを使用する - デフォルトは無効(
false
)
- 有効(
rewriteBatchedStatements
- 有効(
true
)にすると、executeBatch
の呼び出しを伴うinsertおよびreplaceをバルクinsertまたはバルクreplaceに書き換える - デフォルトは無効(
false
)
- 有効(
useLocalSessionState
cacheResultSetMetadata
- 有効(
true
)にすると、ResultSetMetaData
をキャッシュする - デフォルトは無効(
false
)
- 有効(
cacheServerConfiguration
- 有効(
true
)にすると、show variables
とshow collation
の結果をキャッシュする - デフォルトは無効(
false
)
- 有効(
elideSetAutoCommits
- 有効(
true
)にすると、Connection#setAutoCommit
実行時にサーバーとドライバーの状態が異なる時のみset autocommit=n
クエリーを発行する - デフォルトは無効(
false
)
- 有効(
maintainTimeStats
- 無効(
false
)にすると、MySQLサーバーへの接続が失敗した時に詳細なエラーメッセージを出力するために維持するアイドル時間等の内部タイマーを無効にする - デフォルトは有効(
true
)
- 無効(
あとは、これに加えてcharacterEncoding
とconnectionCollation
を指定しておけばいいのかな、という気がします。
参考
MySQL :: MySQL Connector/J 8.0 Developer Guide :: 6.3.13 Performance Extensions