- 최신
- 최다 투표
- 가장 많은 댓글
【以下的回答经过翻译处理】 请参考以下问题的答案。
- 聚簇索引和SORT KEY有什么区别?
回答:Redshift不支持聚簇索引。我了解您正在尝试将SORT KEY与其他关系性数据库中的聚簇索引进行比较。要了解区别,您需要了解Redshift中列式数据存储的本质。这个[Redshift文档](https://docs.aws.amazon.com/en_us/redshift/latest/dg/c_columnar_storage_disk_mem_mgmnt.html)将帮助您理解这一点。
在将数据存储在行中的数据库系统中,聚簇索引将根据索引列物理上排序行级数据。在Redshift中,磁盘上的数据是根据该列的排序键排列的。
2.在Redshift中,索引的概念已经被SORTKEY所替代,对吗?
回答:Redshift中的排序键提供了类似于聚簇索引的好处,即在存储级别上对数据进行排序,以减少表扫描并提供更高性能的查询。
3.我可以在Redshift中像在事务性数据库中一样对表进行分区吗?
回答:您不需要在Redshift中对表进行分区。它将列式数据存储在1 MB的磁盘块中,按SORT KEY排序。每个块的最小值和最大值存储为元数据的一部分。如果查询使用数据范围(比如去年或上个月或客户日期之间),查询处理程序可以使用元数据中的最小值和最大值快速跳过大量块,从而进行表扫描。
例如,假设一个表存储了按日期排序的5年数据,查询指定了一个月的日期范围。在这种情况下,您可以从扫描中消除多达98%的磁盘块。
当在Redshift中使用Redshift Spectrum查询EXTERNAL TABLES(存储在Amazon S3中的数据)时,可以通过过滤分区键来限制Redshift Spectrum扫描的数据量。您可以根据EXTERNAL TABLES上的任何键对数据进行分区。请参考本文档。
4.在SORTKEY或DISTKEY之间进行选择时,我应该考虑什么? 回答:首先,考虑使用自动表优化,这样您就不需要选择表的排序键或分布键。
如果您想手动选择它们,那么您必须了解命中表的查询的模式。例如,如果最频繁地查询最近的数据,则指定时间戳列作为排序键的前导列。请参考本文档。
要选择正确的分布键,请参考本页提供的指导。
同样,建议使用自动表优化,这样您就不必担心选择正确的SORT KEY或DISTRIBUTION KEY。