Amazon Web Services ブログ
新しい統合 SYS ビューを使用して Amazon Redshift のモニタリングを簡素化
Amazon Redshift は、クラウドにおけるフルマネージド型のペタバイト規模のデータウェアハウスサービスであり、他のどのクラウドデータウェアハウスよりも最大 5 倍優れたコストパフォーマンスを実現し、追加費用なしですぐにパフォーマンスの革新的な向上を実現できます。 何万ものお客様が Amazon Redshift を使用して毎日エクサバイト単位のデータを処理し、分析ワークロードを強化しています。
この記事では、Amazon Redshift SYS モニタリングビューについて説明し、Amazon Redshift のワークロードとリソース使用量のモニタリングを簡素化する方法について説明します。
SYS モニタリングビューの概要
SYS モニタリングビューは Amazon Redshift のシステムビューで、プロビジョニングされたクラスターやサーバーレスワークグループのクエリとワークロードのリソース使用状況をモニタリングするために使用できます。 これらには次の利点があります:
- クエリの状態、パフォーマンス指標、クエリの種類を考慮して、機能の整合性に基づいて分類されています
- パフォーマンスのトラブルシューティングに役立つように、
planning_time、lock_wait_time、remote_read_io、local_read_ioなどの新しいパフォーマンスメトリクスを導入しました - Redshift の オプティマイザで書き直されたクエリの代わりに、ユーザーが送信したクエリをログに記録することで、モニタリングビューの使いやすさが向上しています
- 少ないビューでより多くのトラブルシューティングメトリクスを提供できます
- プロビジョニングされたクラスターでもサーバーレスワークグループでも同じクエリを使用できるため、Amazon Redshift の統合的なモニタリングが可能になります
では、いくつかのSYS モニタリングビューの機能と、それらをモニタリングにどのように使用できるかを見ていきましょう。
さまざまなクエリレベルのモニタリングメトリクスを統合
次の表は、複数のシステムテーブルとビューをクエリすることで得られるさまざまなメトリクスと情報を、一つのSYSモニタリングビューにどのように統合できているかを示しています
| STL/SVL/STV | 得られる情報 | SYS モニタリングビュー | ビューのカラム |
| STL_QUERY | クエリの消費合計時間, クエリ名の短縮系, ユーザーID, トランザクションID, セッションID,クエリのステータス, データベース名 | SYS_QUERY_HISTORY |
user_id query_id query_label transaction_id session_id database_name query_type status result_cache_hit start_time end_time elapsed_time queue_time execution_time error_message returned_rows returned_bytes query_text redshift_version usage_limit compute_type compile_time planning_time lock_wait_time |
| STL_WLM_QUERY | キュー滞在時間, 実行合計時間 | ||
| SVL_QLOG | キャッシュの使用 | ||
| STL_ERROR | エラーコード、エラーメッセージ | ||
| STL_UTILITYTEXT | SELECT以外のSQL | ||
| STL_DDLTEXT | DDLステートメント | ||
| SVL_STATEMENTEXT | 全てのタイプのSQLステートメント | ||
| STL_RETURN | 結果の行数とバイト | ||
| STL_USAGE_CONTROL | クエリによって到達した使用制限 ID のリスト | ||
| STV_WLM_QUERY_STATE | WLMの現在の状態 | ||
| STV_RECENTS | 現在実行中であるか完了しているクエリ | ||
| STV_INFLIGHT | 実行中のクエリ | ||
| SVL_COMPILE | コンパイル |
SYS から STL/SVL/STV へのマッピングに関する追加情報については、SYS モニタリングビューへの移行 を参照してください。
ユーザークエリレベルのロギング
クエリのパフォーマンスを向上させるために、Redshift クエリエンジンはユーザーが送信したクエリを書き換えることができます。 ユーザーが送信したクエリの ID は、書き換えられたクエリの ID とは異なります。 この記事では、ユーザーが送信したクエリを親クエリ、書き直したクエリを子クエリと呼びます。
次の図は、親クエリレベルと子クエリレベルでのロギングを示しています。 親クエリのIDは 1000 で、子クエリのIDは 1001、1002、1003 です。
クエリのライフサイクルのタイミング
SYS_QUERY_HISTORY では、さまざまなクエリライフサイクルフェーズに関連する詳細な時間メトリクスを提供するために、カラムが拡張されています。 すべての時間はマイクロ秒単位で記録されることに注意してください。 次の表は、これらのメトリクスをまとめたものです。
| タイムメトリクス | 詳細 |
| planning_time | クエリを実行する前にクエリが費やした時間。通常、パース、分析、計画、書き換えなどのクエリライフサイクルフェーズが含まれます。 |
| lock_wait_time | 参照されている必要なデータベースオブジェクトのロックの取得にクエリが費やした時間。 |
| queue_time | リソースが実行可能になるまで、クエリがキュー内で待機していた時間。 |
| compile_time | クエリのコンパイルにかかった時間。 |
| execution_time | クエリの実行にかかった時間。 SELECT クエリの場合、これには結果が返ってくるまでの時間も含まれます。 |
| elapsed_time | クエリ実行の開始から終了までの時間。 |
ソリューションの概要
SYS モニタリングビューに慣れるために、以下のシナリオについて説明します:
- ワークロードとクエリのライフサイクルのモニタリング
- データ取り込みモニタリング
- 外部クエリのモニタリング
- クエリのパフォーマンスが遅い場合のトラブルシューティング
前提条件
この投稿の例に従うには、以下を事前に準備する必要があります:
- AWS アカウント
- プロビジョニングされた Redshift クラスター (現在のトラック) または Amazon Redshift Serverless エンドポイント
加えて、この記事で参照されているすべての SQL クエリを Redshift クエリエディタ v2 SQL ノートブックとしてダウンロードしてください。
ワークロードとクエリのライフサイクルのモニタリング
このセクションでは、ワークロードとクエリのライフサイクルをモニタリングする方法について説明します。
実行中のクエリを識別
SYS_QUERY_HISTORY では、実行中のすべてのクエリと実行履歴を一元的に確認できます。 次のクエリの例を参照してください:
実行時間の長い上位クエリを特定
次のクエリは、実行に最も時間がかかる上位 100 件のクエリを取得するのに役立ちます。 これらのクエリを分析 (可能であれば最適化) することで、全体的なパフォーマンスを向上させることができます。 これらのメトリクスは、すべての実行されたクエリを累積した統計値です。 時間の値はすべてマイクロ秒単位であることに注意してください。
次の結果になります。
クエリの種類、期間、ステータス別に毎日のクエリ数を収集
次のクエリは、さまざまなタイプのクエリが各日にどのように分布しているかを把握し、ワークロードの変化を評価して追跡するのに役立ちます:
















