【发布时间】:2016-08-11 18:52:42
【问题描述】:
我有一个带有单个 dc1.large 节点的 redshift 集群。我已经将数据写入其中,每天大约有 5000 万条记录,格式为时间戳、用户 ID 和项目 ID。项目ID(varchar)唯一,用户ID(varchar)不唯一,时间戳(timestamp)不唯一。
在我的大约 110m 条记录的 redshift 数据库中,如果我有一个没有排序键的表,则搜索单个项目 ID 大约需要 30 秒。
如果我有一个带有项目 ID 排序键的表,我会得到一个大约 14-16 秒的单个项目 ID 搜索时间。
如果我有一个包含所有三列的交错排序键的表,则单个项目 ID 搜索时间仍然是 14-16 秒。
我希望实现的是能够以秒为单位查询数千或数万个项目 ID 的记录。
查询看起来像
select count(*) from rs_table where itemid = 'id123';
或
select count(*) from rs_table where itemid in ('id123','id124','id125');
此查询在 541 毫秒内返回
select count(*) from rs_table;
AWS 文档表明,第一次运行查询时有一个编译时间,但我认为这不是我所看到的(如果是这样,那就不太理想了,因为每个独特的集合10,000 个 ID 可能永远不会再以完全相同的顺序查询。
我不得不假设我在排序键设计、查询或两者的某种组合上做错了——对于大约 10g 的表空间,像 redshift 这样的东西不应该花这么长时间来查询,对吧?
【问题讨论】:
标签: amazon-redshift