STL_QUERY_METRICS
ユーザー定義のクエリキュー (サービスクラス) でアクティブに実行され、完了したクエリについて、処理される列数、CPU 使用率、入出力、ディスク使用率などのメトリクス情報を含みます。現在実行されているアクティブなクエリのメトリクスを表示するには、STV_QUERY_METRICS システムビューを参照してください。
クエリメトリクスは、1 秒間隔でサンプリングされます。結果として、同じクエリが複数実行され、わずかに異なる時刻を返す場合があります。また、1 秒未満で実行されるクエリセグメントは記録されない場合があります。
STL_QUERY_METRICS は、クエリレベル、セグメントレベル、およびステップレベルでメトリクスを追跡および集計します。クエリセグメントとステップの詳細については、「クエリプランと実行ワークフロー」を参照してください。多くのメトリクス (max_rows
、cpu_time
など) は、ノードスライスを超えて合計されます。ノードスライスの詳細については、「データウェアハウスシステムのアーキテクチャ」を参照してください。
列がメトリクスをレポートするレベルを確認するには、segment
列および step_type
列を調べます。
-
segment
とstep_type
の両方が-1
である場合、列はクエリレベルでメトリクスをレポートします。 -
segment
が-1
でなく、step_type
が-1
である場合、列はメトリクスをセグメントレベルでレポートします。 -
segment
とstep_type
の両方が-1
でない場合、列はステップレベルでメトリクスをレポートします。
SVL_QUERY_METRICS ビューと SVL_QUERY_METRICS_SUMMARY ビューは、このビューのデータを集計し、より便利な形式で情報を表示します。
STL_QUERY_METRICS はすべてのユーザーに表示されます。スーパーユーザーはすべての行を表示できますが、通常のユーザーは自分のデータのみを表示できます。詳細については、「システムテーブルとビューのデータの可視性」を参照してください。
このテーブルの一部またはすべてのデータは、SYS モニタリングビュー SYS_QUERY_DETAIL でも確認できます。SYS モニタリングビューのデータは、使いやすく理解しやすいようにフォーマットされます。クエリには、SYS モニタリングビューを使用することをお勧めします。
テーブルの列
列名 | データ型 | 説明 |
---|---|---|
userid | integer | エントリを生成したクエリを実行したユーザーの ID。 |
service_class | integer | サービスクラスの ID。クエリキューは WLM 設定で定義されます。メトリクスはユーザー定義のキューについてのみレポートされます。 |
query | integer | クエリ ID。クエリ列は、他の各種システムテーブルおよびビューを結合するために使用できます。 |
segment | integer | セグメント番号。複数のセグメントから構成された 1 つのクエリ。各セグメントは 1 つ以上のステップから構成されます。複数のクエリセグメントを同時に実行できます。各セグメントは 1 つのプロセスで実行されます。セグメント値が -1 である場合は、メトリクスセグメントの値はクエリレベルまでロールアップされます。 |
step_type | integer | 実行されたステップのタイプ。ステップタイプの説明については、「ステップタイプ」を参照してください。 |
starttime | timestamp | UTC で表されたクエリの実行開始時刻。秒の小数部の精度 (6 桁) を使用します。例: 2009-06-12 11:29:19.131358 。 |
スライス | integer | クラスターのスライスの数。 |
max_rows | bigint | ステップの列出力の最大数 (すべてのスライスにわたる集計値)。 |
rows | bigint | ステップに処理された行数。 |
max_cpu_time | bigint | CPU の最長使用時間 (ミリ秒)。セグメントレベルでは、すべてのスライスにわたるセグメントによる CPU の最長使用時間。クエリレベルでは、任意のクエリセグメントによる CPU の最長使用時間。 |
cpu_time | bigint | CPU の使用時間 (ミリ秒)。セグメントレベルでは、すべてのスライスにわたるセグメントの CPU 時間の合計。クエリレベルでは、すべてのスライスとセグメントにわたるクエリの CPU 時間の合計。 |
max_blocks_read | bigint | セグメントに読み取られた 1 MB ブロックの最大数 (すべてのスライスにわたる集計値)。セグメントレベルでは、すべてのスライスにわたるセグメントによって読み取られた 1 MB ブロックの最大数。クエリレベルでは、任意のクエリセグメントによって読み取られた 1 MB ブロックの最大数。 |
blocks_read | bigint | クエリまたはセグメントに読み取られた 1 MB ブロックの数。 |
max_run_time | bigint | セグメントの最長経過時間 (ミリ秒) セグメントレベルでは、すべてのスライスにわたるセグメントの最長実行時間。クエリレベルでは、任意のクエリセグメントの最長実行時間。 |
run_time | bigint |
すべてのスライスにわたって集計された合計実行時間。実行時間に待機時間は含まれません。 セグメントレベルでは、すべてのスライスにわたって合計されたセグメントの実行時間。クエリレベルでは、全てのスライスとセグメントにわたって合計されたクエリの実行時間。合計値であるため、実行時間はクエリの実行時間とは関連しません。 |
max_blocks_to_disk | bigint | 中間結果の書き込みに使用する最大ディスク容量 (MB ブロック)。セグメントレベルでは、全てのスライスにわたるセグメントによって使用された最大ディスク容量。クエリレベルでは、任意のクエリセグメントによって使用された最大ディスク容量。 |
blocks_to_disk | bigint | クエリまたはセグメントが中間結果の書き込みに使用するディスク容量 (MB ブロック)。 |
step | integer | 実行されたクエリステップ。 |
max_query_scan_size | bigint | クエリによってスキャンされた最大データサイズ (MB)。セグメントレベルでは、すべてのスライスにわたるセグメントによってスキャンされたデータの最大サイズ。クエリレベルでは、任意のクエリセグメントによってスキャンされたデータの最大サイズ。 |
query_scan_size | bigint | クエリによってスキャンされたデータサイズ (MB)。 |
query_priority | integer | クエリの優先度です。有効な値は、-1 、0 、1 、2 、3 、および 4 です。ここで、-1 は、クエリ優先度がサポートされていないことを意味します。 |
query_queue_time | bigint | クエリがキューに入れられた時間 (マイクロ秒)。 |
service_class_name | character(64) | サービスクラスの名前。 |
サンプルクエリ
CPU 時間の長いクエリ (1,000 秒以上) を検索するには、次のクエリを実行します。
Select query, cpu_time / 1000000 as cpu_seconds from stl_query_metrics where segment = -1 and cpu_time > 1000000000 order by cpu_time; query | cpu_seconds ------+------------ 25775 | 9540
ネストされたループ結合を持ち、100 万以上の行を返したクエリを検索するには、次のクエリを実行します。
select query, rows from stl_query_metrics where step_type = 15 and rows > 1000000 order by rows; query | rows ------+----------- 25775 | 2621562702
60 秒以上実行されていて CPU 時間が 10 秒以下のアクティブなクエリを検索するには、次のクエリを実行します。
select query, run_time/1000000 as run_time_seconds from stl_query_metrics where segment = -1 and run_time > 60000000 and cpu_time < 10000000; query | run_time_seconds ------+----------------- 25775 | 114