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