Amazon Simple Storage Service (Amazon S3) から Amazon Redshift に大量のデータをロードする際、最適なパフォーマンスを維持したいです。
簡単な説明
INSERT コマンドまたは COPY コマンドを使用して Amazon S3 から Amazon Redshift テーブルにデータを追加できます。ただし、効率性に優れた COPY コマンドの使用をおすすめします。COPY では、超並列処理 (MPP) アーキテクチャを使用して S3 バケット内のファイルから同時にデータをロードします。
その他の使用できる方法については、「Amazon Redshift にデータをロードする」を参照してください。
解決策
単一の COPY コマンドを実行する
COPY コマンドを 1 件のみ実行し、1 つのテーブルをロードします。複数の同時 COPY コマンドを使用して複数のファイルから 1 つのテーブルをロードした場合、Amazon Redshift はシリアル化されたロードを実行するため、速度が低下する可能性があります。
データファイルの準備
COPY コマンドを効率的に使用するには、データファイルも準備する必要があります。ファイル数とそのサイズは、並列処理能力に影響します。
COPY コマンドで複数のファイルを指定した場合、Amazon Redshift はデータを並行してロードします。データファイルを準備する際、サイズがほぼ同じで、1 MB ~ 1 GB の範囲内であることを確認してください。
Redshift でプロビジョニングされたクラスターでは、ファイル数はスライスの数の倍数にすることをおすすめします。Amazon Redshift Serverless では、ファイル数は128 の倍数にすることをおすすめします。。詳細については、「データファイルのロード」を参照してください。
Redshift でプロビジョニングされたクラスターのスライス数を取得するには、次のクエリを実行します。
select count(*) from STV_SLICES where type = 'D';
注: 単一の非圧縮 .csv ファイル、Parquet ファイル、または ORC ファイル COPY コマンドで指定すると、Amazon Redshift は 128 MB を超えるファイルを分割します。
COPY コマンドのステータスを監視する
COPY コマンドのステータスを確認するには、システムテーブルを確認します。
システムテーブルには、ファイル数、ファイルサイズ、ロードされた行数などの、COPY コマンドの詳細が記録されます。テーブルを監視すると、実行できるパフォーマンスを向上させたり、COPY コマンドが失敗した原因を判断したりできます。
COPY コマンドの詳細については、「SYS_LOAD_HISTORY」および「SYS_LOAD_DETAIL」を参照してください。
COPY コマンドのエラーに関する詳細については、「SYS_LOAD_ERROR_DETAIL」を参照してください。
関連情報
Amazon Redshift でデータをロードする上でのベストプラクティス
COPY コマンドでテーブルをロードする
圧縮ファイルと非圧縮ファイルからデータをロードする