一些关于Redshift的问题

0

【以下的问题经过翻译处理】 请问能否为我解惑一下?

  1. 聚簇索引和SORTKEY之间有什么区别?
  2. 在Redshift中,索引的概念已经被SORTKEY所取代了,是吗?
  3. 我可以像在事务性数据库中那样对Redshift表进行分区吗?
  4. 在选择SORTKEY或DISTKEY时,我应该考虑什么?
profile picture
专家
已提问 5 个月前32 查看次数
1 回答
0

【以下的回答经过翻译处理】 请参考以下问题的答案。

  1. 聚簇索引和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。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则

相关内容