我试图在redshift中为某些表添加dist和sort键。
我注意到在添加表的大小为0.50之前,添加之后会增加到0.51或0.52。这可能吗 ?使用dist和sort键的全部目的是减小表的大小,并有助于提高读/写性能。
答案 0 :(得分:7)
这不是拥有DISTKEY
和SORTKEY
的目的。
要减少表格的存储空间,请使用压缩。
DISTKEY 用于在切片之间分发数据。通过在同一切片上共同定位信息,查询可以更快地运行。例如,如果您有这些表:
customer
表,DISTKEY = customer_id
invoices
表,DISTKEY = customer_id
...然后这些表格将以相同的方式分发。给定customer_id
的两个表中的所有记录都将位于同一切片上,从而避免了在切片之间传输数据的需要。 DISTKEY应该是主要用于 JOINS 的列。
SORTKEY 用于对磁盘上的数据进行排序,以便区域地图。磁盘上的每个存储块大小为1MB,并且只包含一个表中一列的数据。对该列的数据进行排序,然后存储在多个块中。与每个块关联的区域地图标识该块中存储的最小和最大值。然后,当使用 WHERE 语句运行查询时,Amazon Redshift只需要读取包含所需数据范围的块。通过跳过WHERE子句中不包含数据的块,Redshift可以更快地运行查询。
以上都可以一起工作。例如,压缩数据需要更少的块,这也允许Redshift根据区域地图跳过更多数据。要从查询中获得最佳性能,请同时使用DISTKEY,SORTKEY和压缩。
(通常建议不要压缩SORTKEY列,因为它会导致从一个块加载太多行。)
另请参阅:Top 10 Performance Tuning Techniques for Amazon Redshift