CLOVER🍀

That was when it all began.

MySQL Connector/Jで設定した方が良さそうなプロパティについて

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
    • 有効(true)にするとオートコミットやトランザクションの分離レベルをローカルの情報を元に判断し、MySQLサーバーへの問い合わせを減らす
    • デフォルトは無効(false)
  • 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 Connector/JとCharacter Set/Character Set Results/Connection Collationとの設定、関係がよくがわからなかったので調べてみる - CLOVER🍀

参考

MySQL :: MySQL Connector/J 8.0 Developer Guide :: 6.3.13 Performance Extensions

Connector/J Performance Gems