クエリパフォーマンスに影響を与える要因 - Amazon Redshift

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

クエリパフォーマンスに影響を与える要因

いくつかの要因がクエリパフォーマンスに影響を与える可能性があります。データ、クラスター、データベース操作の次の側面はすべて、クエリ処理の速度に影響を与えます。

  • ノード、プロセッサ、スライスの数 – コンピューティングノードはスライスに分割されています。ノードが多いということは、プロセッサとスライスが多いことを意味するため、クエリの各部分をスライス間で同時実行することによりプロエスをすばやく処理することが可能になります。ただし、ノードが多いとコストも上昇するため、システムに適したコストとパフォーマンスのバランスを見つける必要があります。Amazon Redshift クラスターアーキテクチャの詳細については、「データウェアハウスシステムのアーキテクチャ」を参照してください。

  • ノードタイプ – Amazon Redshift クラスターは、高密度ストレージまたは高密度コンピューティングノードを使用できます。高密度ストレージノードタイプは、かなりの量のデータストレージが必要な場合にお勧めで、高密度コンピューティングノードタイプは、パフォーマンス重視の作業負荷用に最適化されています。各ノードタイプは様々なサイズを提供し、クラスターを適切に拡張することができるように制限します。ノードサイズによって、クラスター内の各ノードのストレージ容量、メモリ、CPU、および料金が決まります。ノードタイプの詳細については、「Amazon Redshift の料金表」を参照してください。

  • データ分散 – Amazon Redshift は、テーブルの分散スタイルに応じて、テーブルデータをコンピューティングノードに保存します。クエリを実行すると、必要に応じて結合と集計を実行するために、クエリオプティマイザによってデータがコンピューティングノードに再分散されます。テーブルに適した分散スタイルを選択すると、結合を実行する前にデータを必要な場所に配置しておくことによって、再分散ステップの影響を最小限に抑えることができます。詳細については、データ分散スタイルの選択 を参照してください。

  • データのソート順 – Amazon Redshift は、テーブルのソートキーに応じたソート順で、テーブルデータをディスクに保存します。クエリオプティマイザとクエリプロセッサは、データの保存場所に関する情報を使用して、スキャンする必要があるブロックの数を減らすため、クエリの速度が向上します。詳細については、ソートキーの選択 を参照してください。

  • データセットサイズ – クラスター内のデータのボリュームが大きくなると、スキャンおよび再分散する必要がある行が増えるため、クエリのパフォーマンスが低下する可能性があります。データのバキューム処理とアーカイブを定期的に実行し、クエリデータセットを制限する述語を使用することによって、この影響を緩和できます。

  • 同時操作 – 複数の操作を一度に実行すると、クエリパフォーマンスに影響が及ぶ可能性があります。操作が実行されるたびに使用可能なクエリーキューの 1 つ以上のスロットが取得され、それらのスロットに関連付けられたメモリが使用されます。他の操作が実行されている場合、十分なクエリキュースロットを使用できない可能性があります。この場合、クエリは処理を開始する前にスロットが空くのを待つ必要があります。クエリキューの作成と設定の詳細については、「Implementing workload management」を参照してください。

  • クエリ構造 – クエリの書き込み方法は、そのパフォーマンスに影響を与えます。できる限り少ないデータを処理して返すクエリを記述すると、ニーズを満たすことができます。詳細については、Amazon Redshift best practices for designing queries を参照してください。

  • コードコンパイル – Amazon Redshift は、各クエリ実行プランのコードを生成してコンパイルします。

    コンパイルされたコードは、インタプリタを使用するオーバーヘッドを排除するため、より高速に実行されます。通常、コードが初めて生成およびコンパイルされるときは、ある程度のオーバーヘッドコストが生じます。その結果、最初に実行したときのクエリのパフォーマンスは、誤解を招く場合があります。1 回限りのクエリを実行するときは、オーバーヘッドコストは特に顕著になります。クエリーを再度実行して、一般的なパフォーマンスを判断します。 Amazon Redshift サーバーレスコンパイルサービスを使用して、 Amazon Redshift クラスタ。コンパイルされたコード・セグメントは、クラスタ上にローカルにキャッシュされ、実質的に無制限のキャッシュに格納されます。このキャッシュは、クラスタの再起動後も保持されます。同じクエリのその後の実行は、コンパイルフェーズをスキップできるため、より高速に実行されます。キャッシュは、 Amazon Redshift バージョン。したがって、バージョンのアップグレード後にクエリが実行されると、コードが再コンパイルされます。拡張可能なコンパイルサービスを使用することで、 Amazon Redshift は、一貫して高速なパフォーマンスを提供するために、コードを並行してコンパイルできます。ワークロードの速度向上の程度は、クエリの複雑さと並行性によって異なります。