Connector/J Performance and Debugging Features, Part 1

by Mark D. Matthews

Connector/J開発者によるパフォーマンス&デバッグ機能解説のPart1:

  • パフォーマンスはちょっとやれば簡単に改善できる一方で,さまざまな局面に関わっている.特にスケーラビリティと関連が深い.
  • 鍵となるのは,Arrival Rate(リクエストの到着率),Service Time(レスポンスタイム?),普通は同時実行性に関する部分がボトルネックとなる.
  • 重要なのはスループット(?)
  • Volume/Complexityによって取る手段がいろいろ.
  • High Volume/Complexityではレプリケーション等の考慮をしたほうが良い
  • Connector/JでReplicationを使うための機能有り
  • Extremely High Volume/Complexityではもう打つ手が無い.ハードウェアに投資する必要有り.
  • パフォーマンスの検証は継続的に行うべき.
  • Connector/J Performance Monitors, Usage Advisor, Profiler ??
  • チューニング時には丁寧に記録を取り,全てのログ,全ての設定変更の記録を残す.
  • なるべく最新のConnector/Jを使う.バージョンUPごとにたいていはパフォーマンスも改善している.
  • JDBCリソースは極力素早く解放する,クエリ数を減らす,実際に使うデータのみを検索する,キャッシュを使えるだけ使う(JBossCacheとか).
  • キャッシュ関連JDBCプロパティ
cachePreparedStatements=true // PreparedStatement
cacheCallableStatements=true // CallableStatement
cacheServerConfig=true       // ServerConfiguration
elideSetAutoCommits=true     // Session State
useLocalSessionState=true    // Session State
alwaysSendSetIsolation=false // Session State
  • スロークエリログを使って遅いクエリを特定,explainを使って原因を分析,インデックスを足すなりして改善する.あるいはshow innodb status,show status(key_reads, key_read_request)などのshowコマンドで分析.
logSlowQueries=true
'auto explain' -> exlipainSlowQueries=true
slowQueryThresholdMillis=n (2000 default)
  • これで遅いクエリとその原因が手軽に分かる.
  • Connector/Jのこれらの機能はもちろん全てClient-sideでの機能

感想.Part2は午後にあるけれども,都合により出られないのが残念.参加者は60人くらい.

各セッションは45分間で,ちょうど良い長さ.