【发布时间】:2017-08-04 13:46:36
【问题描述】:
我已经构建了一个系统,每隔几分钟(从 kinesis firehose)将数据从 s3 加载到 redshift 中。然后我从该主表中获取数据并将其拆分为每个客户的表。
主表有几亿行。
创建子表是通过这样的查询完成的:
create table {$table} as select * from {$source_table} where customer_id = '{$customer_id} and time between {$start} and {$end}'
我将键定义为:
SORTKEY (customer_id, time)
DISTKEY customer_id
我读过的所有内容都表明这将是构建表/查询的最佳方式,但性能绝对糟糕。即使只有几行可供选择,构建子表也需要一分钟。
是我遗漏了什么还是只需要扩展集群?
【问题讨论】:
-
那些DISTKEY和SORTKEY是在主表还是子表?如果您将查询作为 SELECT 而不是作为 CREATE TABLE 运行,那么执行需要多长时间?
-
SELECT 和 CREATE TABLE 的性能几乎相同。
标签: amazon-redshift