同時実行スケーリング
同時実行スケーリング機能を使用すると、一貫した高速のクエリパフォーマンスで、数千の同時ユーザーと同時クエリをサポートできます。同時実行スケーリングが有効になっている場合、Amazon Redshift は自動的に新たなクラスターキャパシティーを追加し、読み取りと書き込み両方でクエリの増加に対応します。クエリをメインクラスターと同時実行スケーリングクラスターのどちらで実行しても、ユーザーには最新のデータが表示されます。
WLM キューを設定することで、どのクエリを同時実行スケーリングクラスターに送信するかを管理できます。同時実行スケーリングを有効にすると、対象となるクエリはキュー内に待機することなく、同時実行スケーリングクラスターに送信されるようになります。
同時実行スケーリングクラスターは、実際に実行した時間分のみ課金されます。料金の発生する仕組みや最低料金など、料金の詳細については、「同時実行スケーリングの料金
トピック
同時実行スケーリング機能
WLM キューで同時実行スケーリングを有効にすると、このスケーリングは、ダッシュボードクエリなどの読み取りオペレーションのために機能します。また、データの取り込みや処理のためのステートメントなど、一般的に使用される書き込みオペレーションにおいても機能します。
書き込み操作のための同時実行スケーリング機能
同時実行スケーリングは、抽出、変換、ロード (ETL) ステートメントなど、頻繁に使用される書き込みオペレーションをサポートしています。書き込み操作用の同時実行スケーリングは、多数のリクエストを受信しているクラスターに、一貫した応答時間を維持させたい場合に特に有用です。これにより、メインクラスター上のリソースについて競合を起こしている、書き込み操作のスループットが向上します。
同時実行スケーリングでは、COPY、INSERT、DELETE、UPDATE、CREATE TABLE AS (CTAS) の各ステートメントをサポートしています。さらに、同時実行スケーリングは、集計を使用しない MV のマテリアライズドビュー更新をサポートしています。他のデータ操作言語 (DML) ステートメントとデータ定義言語 (DDL) ステートメントはサポートされていません。サポートされていない WRITE ステートメント (CREATE without TABLE AS など) が、サポートされている WRITE ステートメントの前に明示的なトランザクションに含まれる場合、その WRITE ステートメントは同時実行スケーリングクラスターでは実行されません。
同時実行スケーリングのクレジットを計上すると、このクレジットは、読み取りと書き込み両方のオペレーションに適用されます。
同時実行スケーリングに関する制限
Amazon Redshift で同時実行スケーリングを使用する際の制限事項を以下に示します。
-
インターリーブソートキーを使用するテーブルに対するクエリはサポートされていません。
-
一時テーブルに対するクエリはサポートされていません。
-
制限のあるネットワークまたは仮想プライベートクラウド (VPC) 構成で保護されている、外部リソースにアクセスするクエリはサポートされません。
-
Python のユーザー定義関数 (UDF) と Lambda UDF を含むクエリはサポートされていません。
-
システムテーブル、PostgreSQL のカタログテーブル、またはバックアップ用ではないテーブルにアクセスするクエリはサポートされていません。
-
制限付き IAM ポリシーのアクセス許可が設定されている場合、外部リソースにアクセスする COPY クエリや UNLOAD クエリはサポートされません。これには、Amazon S3 バケットや DynamoDB テーブルなどのリソース、またはソースに適用されるアクセス許可が含まれます。IAM ソースの例は以下のとおりです。
aws:sourceVpc
– ソース VPC。aws:sourceVpce
– ソース VPC エンドポイント。aws:sourceIp
– ソース IP アドレス。
場合によっては、リソースまたはソースのいずれかを制限するアクセス許可を削除して、リソースにアクセスする COPY クエリや UNLOAD クエリが同時実行スケーリングクラスターに送信されるようにする必要があります。
リソースポリシーの詳細については、「AWS Identity and Access Management ユーザーガイド」の「ポリシータイプ」と、「バケットポリシーを使用した VPC エンドポイントからのアクセスコントロール」を参照してください。
-
書き込みオペレーションの Amazon Redshift の同時実行スケーリングでは、CREATE TABLE や ALTER TABLE などの DDL (書き込み) オペレーションはサポートしていません。
-
COPY コマンドでの ANALYZE の使用はサポートされていません。
-
DISTSTYLE に ALL が設定されているターゲットテーブルに対する書き込みオペレーションは、サポートしていません。
-
以下のファイル形式からの COPY はサポートされていません。
Parquet
ORC
-
ID 列を持つテーブルに対する書き込みオペレーションはサポートしていません。
-
Amazon Redshift は、Amazon Redshift RA3 ノードのみで、書き込みオペレーションの同時実行スケーリングをサポートしています。他のノードタイプでは、書き込みオペレーションの同時実行スケーリングはサポートされていません。
同時実行スケーリングの AWS リージョン
Amazon Redshift では、同時実行スケーリングを使用して、Redshift クラスター全体の同時実行ワークロードの需要を管理できます。このトピックでは、Amazon Redshift で同時実行スケーリングを使用できるリージョンについて詳しく説明します。
同時実行スケーリングは、以下の AWS リージョンでご利用になれます。
-
米国東部 (バージニア北部) リージョン (us-east-1)
-
米国東部 (オハイオ) リージョン (us-east-2)
-
米国西部 (北カリフォルニア) リージョン (us-west-1)
-
米国西部 (オレゴン) リージョン (us-west-2)
-
アジアパシフィック (ムンバイ) リージョン (ap-south-1)
-
アジアパシフィック (ソウル) リージョン (ap-northeast-2)
-
アジアパシフィック (シンガポール) リージョン (ap-southeast-1)
-
アジアパシフィック (シドニー) リージョン (ap-southeast-2)
-
アジアパシフィック (東京) リージョン (ap-northeast-1)
-
カナダ (中部) リージョン (ca-central-1)
-
中国 (北京) リージョン (cn-north-1)
-
中国 (寧夏) リージョン (cn-northwest-1)
-
欧州 (フランクフルト) リージョン (eu-central-1)
-
欧州 (アイルランド) リージョン (eu-west-1)
-
欧州 (ロンドン) リージョン (eu-west-2)
-
欧州 (パリ) リージョン (eu-west-3)
-
欧州 (ストックホルム) リージョン (eu-north-1)
-
欧州 (チューリッヒ) リージョン (eu-central-2)
-
欧州 (スペイン) リージョン (eu-south-2)
-
南米 (サンパウロ) リージョン (sa-east-1)
-
AWS GovCloud (米国東部)
同時実行スケーリングの候補
Amazon Redshift では、クエリ処理をスケールアウトして、同時実行クエリを高速化できます。次のトピックでは、Amazon Redshift で同時実行スケーリングにルーティングするクエリを決定するために使用する基準について説明します。
メインクラスターが次の要件を満たしている場合にのみ、クエリは同時実行クラスターにルーティングされます。
-
EC2-VPC プラットフォーム。
-
ノードタイプは dc2.8xlarge、dc2.large、ra3.large、ra3.xlplus、ra3.4xlarge、ra3.16xlarge のいずれかである必要があります。書き込みオペレーションの同時実行スケーリングは、Amazon Redshift RA3 ノードのみでサポートされています。
-
ノードタイプとして ra3.xlplus、ra3.4xlarge、または ra3.16xlarge を使用するクラスターの最大コンピューティングノード数は 32 個です。また、メインクラスターのノード数は、クラスターの元の作成時には 32 ノード以下である必要があります。例えば、クラスターに現在 20 個のノードがあるが、元々 40 個で作成された場合は、同時実行スケーリングの要件を満たしません。逆に、DC2 クラスターに現在 40 個のノードがあるが、元々 20 個で作成されている場合は、同時実行スケーリングの要件を満たします。
-
シングルノードクラスターではありません。
同時実行スケーリングキューの設定
Amazon Redshift では、同時実行スケーリングを設定することで、同時実行リソースとシステムリソースを管理できます。同時実行スケーリングキューを使用すると、同時に実行できるクエリまたはユーザーセッションの数を制限できます。次のセクションでは、Amazon Redshift で同時実行スケーリングキューを有効にして、同時クエリとユーザーセッションを効果的に処理する方法について説明します。
クエリを同時実行スケーリングクラスターにルーティングするには、ワークロードマネージャ (WLM) キューで同時実行スケーリングを有効化します。キューの同時実行スケーリングを有効にするには、[同時実行スケーリングモード] の値に [自動] を設定します。
同時実行スケーリングが有効なキューにルーティングされたクエリの数がキューの同時実行数を超えると、キャパシティが手動で設定されていても、自動で決定されても、対象クエリが同時実行スケーリングクラスターに送信されます。メインクラスターでキュースロットが利用可能になると、クエリはメインクラスターにルーティングされ、実行されます。他の WLM キューと同様に、ユーザーグループに基づいて、またはクエリグループラベルをクエリに付けることで、あるいは [キューへのクエリの割り当て] で定義した照合条件に従って、クエリを同時実行スケーリングキューにルーティングします。WLM クエリモニタリングルール を定義してクエリをルーティングすることもできます。例えば、所要時間が 5 秒を超えるすべてのクエリを同時実行スケーリングキューにルーティングできます。キューイングの動作は、自動 WLM と手動 WLM のどちらを使用しているかによって異なる可能性があることに注意してください。詳細については、「自動 WLM の実装」または「手動 WLM の実装」を参照してください。
同時実行スケーリングクラスターのデフォルト数は 1 です。使用できる同時実行スケーリングクラスターの数は、max_concurrency_scaling_clusters によって制御されます。
同時実行スケーリングのモニタリング
Amazon Redshift では、同時実行スケーリングをモニタリングおよび管理して、データウェアハウスワークロードのパフォーマンスとコスト効率を最適化できます。同時実行スケーリングを使用すると、Amazon Redshift はワークロードの需要が増加すると自動的にクラスター容量を追加し、需要が減少するとその容量を削除します。次のセクションでは、Amazon Redshift クラスターの同時実行スケーリングのモニタリングに関するガイダンスを提供します。
メインクラスターと同時実行スケーリングクラスターのどちらでクエリが実行されているかを確認するには、Amazon Redshift コンソールをで [クラスター] に移動してクラスターを選択します。次に、[クエリのモニタリング] タブと [ワークロードの同時実行] を選択すると、実行中のクエリとキューに入っているクエリに関する情報が表示されます。
実行時間を確認するには、STL_QUERY テーブルをクエリし、concurrency_scaling_status
列でフィルタリングします。次のクエリは、同時実行スケーリングクラスターで実行されたクエリとメインクラスターで実行されたクエリのキュー時間と実行時間を比較します。
SELECT w.service_class AS queue , CASE WHEN q.concurrency_scaling_status = 1 THEN 'concurrency scaling cluster' ELSE 'main cluster' END as concurrency_scaling_status , COUNT( * ) AS queries , SUM( q.aborted ) AS aborted , SUM( ROUND( total_queue_time::NUMERIC / 1000000,2) ) AS queue_secs , SUM( ROUND( total_exec_time::NUMERIC / 1000000,2) ) AS exec_secs FROM stl_query q JOIN stl_wlm_query w USING (userid,query) WHERE q.userid > 1 AND q.starttime > '2019-01-04 16:38:00' AND q.endtime < '2019-01-04 17:40:00' GROUP BY 1,2 ORDER BY 1,2;
必要に応じて、starttime
および endtime
の値を調整します。
同時実行スケーリングシステムビュー
Amazon Redshift では、同時実行スケーリングシステムビューを使用して、クラスター内の同時実行スケーリングアクティビティをモニタリングおよび管理できます。次のセクションでは、Amazon Redshift 環境で同時実行スケーリングを効果的に活用するために、これらのシステムビューをクエリし、結果を解釈する方法について説明します。
プレフィックス SVCS のある一連のシステムビューは、メインクラスターと同時実行スケーリングクラスターの両方におけるクエリに関するシステムログテーブルの詳細を提供します。
以下のビューには、対応する STL ビューや SVL ビューと同様の情報があります。
以下のビューは同時実行スケーリングに固有のものです。
同時実行スケーリングの詳細については、「Amazon Redshift 管理ガイド」で次のトピックを参照してください。