我们是否只能将年度月份时间戳列用作Amazon Redshift中的分配键

imV*_*mVJ 2 amazon-web-services amazon-redshift

我在Redshift上有一张约300米记录的表格.

无论如何我们可以指定年月作为分配密钥而不是时间戳.如果我选择关键的diststyle,它会改善性能,因为我们主要需要查询季度数据.

Joh*_*ein 5

希望这样做.

在Amazon Redshift中,Distribution Key(DISTKEY)用于在切片之间分配数据(每个节点有多个切片).当查询使用DISTKEY连接两个表时,它运行得更快,因为与该键相关的两个表中的数据都在同一个片上 - 不需要在片之间移动数据,并且片可以并行操作.DISTKEY应该是您最常使用的字段 - 通常将JOIN表连接在一起.

还有一个Sort Key(SORTKEY)可以对存储在切片上的数据进行排序.在WHERE子句中使用此SORTKEY 的查询将更有效,因为查询可以跳过磁盘上的块.每个1MB磁盘块包含与一个表中的一列相关的值.每个块都有一个区域图,用于标识块中的最小值和最大值.如果块不包含与WHERE子句匹配的值,则Redshift不需要读取块.这使得查询非常快.

因此,如果您主要查询季度数据,则应将表的SORTKEY设置为timestamp字段.这将允许每个切片并行处理数据,同时跳过不相关的磁盘块.不要使用DISTKEY的日期值 - 这将导致只有一个切片执行查询,并且运行速度会变慢.相反,将DISTKEY设置为您主要用于将该表与其他表(例如客户ID)连接的内容.