メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012年12月1日)

クエリ分析ワークフロー

クエリに予想より時間がかかる場合、以下の手順を使用し、クエリのパフォーマンスに悪影響を与える可能性のある問題を特定して修正します。システムのどのクエリがパフォーマンスの調整の恩恵を受けるかわからない場合、まず「優先して調整が必要なクエリの特定」で診断クエリを実行します。

  1. テーブルがベストプラクティスに従って設計されていることを確認します。詳細については、「テーブル設計のベストプラクティス」を参照してください。

  2. テーブルの不必要なデータを削除またはアーカイブできるかどうかを確認します。たとえば、クエリが常に過去 6 か月分のデータをターゲットとするが、テーブルには過去 18 か月分のデータがあるとします。この場合、古いデータを削除またはアーカイブして、スキャンおよび分散が必要なレコード数を減らすことができます。

  3. クエリ内のデーブルで VACUUM コマンドを実行し、スペースを回復して行を再ソートします。未ソート領域が大きく、クエリが結合または述語でソートキーを使用する場合、VACUUM を実行すると役立ちます。

  4. クエリ内のテーブルで ANALYZE コマンドを実行し、統計が最新であることを確認します。クエリ内のいずれかのテーブルのサイズが最近大きく変更された場合、ANALYZE を実行すると役立ちます。ANALYZE コマンドを全体に実行すると時間がかかりすぎる場合、1 つの列に ANALYZE を実行して処理時間を短縮してください。この方法でもテーブルのサイズ統計が更新されます。テーブルサイズは、クエリプランにおいて重要な要素です。

  5. クエリがコンパイルおよびキャッシュされるように、クエリがクライアントタイプごとに 1 回実行されたことを確認します (クライアントが使用する接続プロトコルのタイプに基づいて)。この方法により、クエリの後続の実行時間が短縮されます。詳細については、「クエリパフォーマンスに影響を与える要因」を参照してください。

  6. STL_ALERT_EVENT_LOG テーブルを確認し、クエリの潜在的な問題を特定して修正します。詳細については、「クエリアラートの確認」を参照してください。

  7. EXPLAIN コマンドを実行してクエリプランを取得し、そのクエリプランを使用してクエリを最適化します。詳細については、「クエリプランの分析」を参照してください。

  8. SVL_QUERY_SUMMARY ビューと SVL_QUERY_REPORT ビューを使用して概要情報を取得し、その情報を使用してクエリを最適化します。詳細については、「クエリの概要の分析」を参照してください。

場合によっては、通常は高速に実行されるクエリが、実行時間が長い別のクエリが終了するのを待機していることがあります。その場合、クエリ自体を改善する方法はないかもしれませんが、さまざまなクエリタイプのクエリキューを作成して使用することで、システム全体のパフォーマンスを向上できます。クエリのキュー待機時間を調べるには、「クエリのキュー待機時間の確認」を参照してください。クエリキューの設定の詳細については、「ワークロード管理の実装」を参照してください。