Oracle Databaseであれば、取得したStatspackやAWRを分析し、ボトルネックを見つけることができますが、Oracle TimesTenにはこのような機能がまだ無いため、以下の手順でチューニングを検討されることをお奨めします。
Step1:データストアの設定に問題が無いか確認しよう。
まずは、データストアのヘルスチェックを行います。チェックする観点は、前回ご説明した監視ポイントと同じです。SYS.SYSTEMSTATS表、SYS.MONITOR表から、以下の点について確認してください。
- チェックポイント回数、コミット回数が想定の範囲内であること
- ログバッファが小さすぎてログ読み取り時にI/Oが多発していないこと
- 一時領域が枯渇していないこと
- ロック競合が発生していないこと
- 一時索引が作成されていないこと
- 設定値を超える接続要求が来ていないこと
また、統計情報と実データの内容に乖離が無いことも必ず確認してください。
上記のポイントが全て問題無かった場合は、SQLチューニングの必要があるかもしれません。ttTraceMonユーティリティを使用して、ボトルネックとなっているSQLを突き止めましょう。
Step2:ttTraceMonユーティリティでSQLトレースを取得しよう。
ttTraceMonユーティリティを使用して、SQLトレースをレベル4で取得します。トレースバッファに溜めたトレース情報を後からコマンドで出力しても良いですが、ディスク領域に余裕があるのであればトレースをファイル出力させた方が扱いは簡単です。ただし、ファイル出力させる場合はアプリケーションのパフォーマンスに大きく影響を与えるため、注意が必要です。いずれの方法でトレースを採取するにしても、パフォーマンス分析が終わったら必ずトレース機能はOFFにしてください。
今回は、トレースバッファ経由でトレース情報を出力する方法をご紹介します。
ttTraceMonユーティリティのトレース機能はシステム単位で有効化されます。セッション単位での取得はできません。
ttTraceMonユーティリティで取得されたSQLトレースによって、実行されたSQLとフェーズ毎の処理時間(prepare、execute、open、fetch、close)が確認できます。
ボトルネックとなっているSQLが特定できたら、次にそのSQLの実行計画を確認しましょう。