Syntax Error.

[Sy] Redshiftのパフォーマンス実例(対1億レコード)

2015/06/26

仕事でRedshiftまわりで試した時のパフォーマンス実例をメモ。約1億レコードを別テーブルへinsertしたり、S3へアンロードしてみたりしてます。

1レコードのサイズによって変わってくるかとは思いますが、参考までに。

テーブルAの全件をテーブルBにinsert

SQLはこんな感じ。(column_nntable_aのカラム数)

insert into
  table_a
select
  /* table_aのレイアウトに合わせてカラム数を調整 */
  column_1,
  column_2,
  .
  .
  .
  column_n
from
  table_b;

カラム数が10、レコード数が約1.3億のテーブルのデータを、別テーブルへ全件insertするのにかかった時間は約3分程度。

ただ、index再生成のためか insert後にそのテーブルの操作が結構重くなった ので注意です。

テーブルの全レコードをS3にアンロード

SQLはこんな感じ。

unload
  ('select * from table_name')
to
  's3://path/to/unload/'
credentials
  'aws_access_key_id=YOURACCESSKEYEXAMPLE;
   aws_secret_access_key=-----YOUR-SECRET-ACCESS-KEY-EXAMPLE-----';

これも約1.3億件に対してやってみたら、15分程度で終了。

できあがったS3上のファイルは、その時は4ファイルに分割されて各ファイルが2GBくらい(合計8GBくらい)でした。