メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012-12-01)

データ分散スタイルの選択

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

このセクションでは、Amazon Redshift データベースにおけるデータ分散の原則を示し、各テーブルに最適な分散スタイルを選択する方法について説明します。

データ分散の概念

ノードとスライス

Amazon Redshift クラスターとは一連のノードのことです。クラスター内の各ノードには、独自のオペレーティングシステム、専用メモリ、および専用のディスクストレージが備わっています。ノードの 1 つはリーダーノードであり、コンピューティングノードへのデータの分散およびクエリ処理タスクを管理します。

コンピューティングノードのディスクストレージは複数のスライスに分割されています。ノードあたりのスライスの数は、クラスターのノードサイズによって決まります。たとえば、各 DS1.XL コンピューティングノードには 2 つのスライスがあり、各 DS1.8XL コンピューティングノードには 16 個のスライスがあります。ノードはいずれも並列クエリ実行に関与し、スライス間でできるだけ均等に分散されたデータを処理します。それぞれのノードサイズにあるスライスの数については、Amazon Redshift Cluster Management Guide の「クラスターおよびノードについて」を参照してください。

データの再分散

テーブルにデータをロードすると、そのテーブルの分散スタイルに従って、Amazon Redshift がテーブルの行を各ノードスライスに分散します。クエリプランの一環として、クエリオプティマイザは、クエリの実行を最適化するために必要なデータブロックの配置場所を決定します。その後、クエリの実行中にデータが物理的に移動 (つまり再分散) されます。再分散では、結合する特定の行を送信するか、またはテーブル全体をすべてのノードにブロードキャストすることが必要となる場合があります。

データの再分散は、クエリプランコストの相当な部分を占める可能性があり、また、再分散によって生成されるネットワークトラフィックは、他のデータベース処理に影響を及ぼし、システム全体のパフォーマンスを低速化する可能性があります。データを最初にどこに配置すれば最も効果的かを予測すると、データ再分散の影響を最小限に抑えることができます。

データ分散の目標

テーブルにデータをロードすると、そのテーブルを作成したときに選択した分散スタイルに従って、Amazon Redshift がテーブルの行をコンピューティングノードとスライスに分散します。データ分散では、次の 2 つの主要目標が設定されます。

  • クラスター内のノード間でワークロードを均等に分散させること。不均等な分散が行われると (データ分散スキュー)、一部のノードの作業量が他のノードよりも多くなり、クエリのパフォーマンスが低下します。

  • クエリ実行中のデータ移動を最小限にとどめること。結合または集計に関与する行が、他のテーブルの結合列とともにノード上ですでにコロケーションされている場合、クエリ実行中に再分散する必要のあるデータの量はそれほど多くなりません。

データベースにどの分散戦略を選択するかは、クエリのパフォーマンス、ストレージ要件、データロード、およびメンテナンスに重大な影響を及ぼします。各テーブルに最良の分散スタイルを選択することにより、データを均等に分散し、システム全体のパフォーマンスを大幅に向上させることができます。

このページの内容: