消費時間モニター・エレメント
消費時間モニター・エレメントは、システム内で時間がどのように費やされているかを追跡します。 これらを照会すると、待機や、さまざまな種類の処理の実行にどのように時間が使われているかを確認できます。 また、特定のシステム・コンポーネントで費やされた経過時間を表示することもできます。
図 1 は、要求の処理時間と比較して、待機に費やされた時間を表示する 1 つの方法を例示しています。
図 1. システムでどのように時間が費やされたかの概要を示す消費時間メトリック. 時間は、待機に費やされた時間 (ロック待機時間、バッファー・プール入出力時間、直接入出力時間)、および実際の処理時間に分割されます。

システムで費やされる時間をデータベース・マネージャーがモニターする方法には、以下の 3 つがあります。
- 待機時間
- コンポーネント処理時間
- コンポーネント経過時間
- 待機時間
- 待機時間モニター・エレメントは、データベース・マネージャーが処理を進める前に何らかの待機に費やした時間を反映します。
例えば、次のサービスの待機に費やした時間が含まれます。
- クライアント要求の着信
- オブジェクトのロックの解除
- 診断ログへの書き込み
- バッファー・プールとの間の読み取り/書き込み
- コンポーネント処理時間
- これらの時間は、データベースの特定の論理コンポーネントにおいて実際の処理に費やされた時間を表します。
例えば、次のようなサービスの実行に費やした時間が含まれます。
- トランザクションのコミットまたはロールバック
- データベース再編成の実行
- SQL のコンパイル
- データのロード
- RUNSTATS 操作の実行
- コンポーネント経過時間
- コンポーネント経過時間は、データベースの 1 つの論理コンポーネントで費やされた経過時間の合計を反映します。
これには、処理時間と、その処理段階で全般的に発生する可能性のあるさまざまな種類の待機時間の両方が 含まれます。
例えば、コミットの実行に費やされる時間の合計には、実際のコミット処理が含まれるのに加えて、さまざまな種類の待機時間 (入出力操作やログ・ファイル操作の完了を待つために発生した時間など) も含まれる可能性があります。
注: 経過時間は、時計で測定される経過時間と同じではありません。費やされた合計時間が複数のスレッドに分割された場合、各スレッドで費やされた時間がこの数値に表されます。例えば、次のようにしてコンポーネント時間を活用できます。全体的なコンポーネント時間を追跡するモニター・エレメントには、例えば total_compile_time、total_commit_time があります。
- 特定のワークロードにおいて、比較的高い処理コストが発生している部分を把握する (例えば、照会実行と比較した SQL コンパイル)
- 特定のコンポーネント領域のコストは実際の処理に起因しているのか、スループット低下の大きな要因は待機時間であるのか、などを判別する
- システムでの全体的な消費時間のコンテキストにおいて、特定のコンポーネント領域 (例えばロールバック処理) のコストを把握する
処理時間と比べた特定の待機時間を詳しく調べるために、コンポーネント処理時間と待機時間を照会することができます。 図 1 は、この 2 種類の消費時間メトリックを互いに比較して表示する方法を例示しています。
特定の種類の待機時間 (例えばロック待機、入出力関連の待機など) を詳しく把握するためにコンポーネント経過時間を使用することはできませんが、この代替的なビューを使用すると、特定の論理データベース・コンポーネントで消費された合計時間と処理時間を比べて確認できます。 例えば、表または索引の再編成に関する実際の処理時間 (total_reorg_proc_time) と、再編成の実行に費やされた経過時間全体 (total_reorg_time) を対比して調べることができます。 後者には、再編成そのものには直接関係のない他のさまざまな処理/待機に費やされた時間が含まれる可能性があります。