データがs3から数分ごとにredshift(kinesis firehoseから)に読み込まれるシステムを構築しました。私はそのメインテーブルからデータを取得し、それを顧客ごとのテーブルに分割します。Redshiftクエリを最適化できません
メインテーブルには数億行があります。私は読んだことがある
SORTKEY (customer_id, time)
DISTKEY customer_id
すべてが、これは私のテーブルを構築するための最適な方法だろう示唆:私のように定義されたキーを持つ
create table {$table} as select * from {$source_table} where customer_id = '{$customer_id} and time between {$start} and {$end}'
:サブテーブルを作成する
は、このようなクエリで行われます/クエリがパフォーマンスは絶対にひどいです。サブテーブルを作成するには、選択する行数がわずかであっても1分以上かかる。
何か不足していますか、クラスタをスケールするだけですか?
これらのDISTKEYとSORTKEYは、メインテーブルまたはサブテーブルにありますか? CREATE TABLEではなくSELECTとしてクエリを実行すると、実行にはどれくらい時間がかかりますか? –
SELECTとCREATE TABLEのパフォーマンスはほぼ同じです。 –