一些关于Redshift的问题

0

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

  1. 聚簇索引和SORTKEY之间有什么区别?
  2. 在Redshift中,索引的概念已经被SORTKEY所取代了,是吗?
  3. 我可以像在事务性数据库中那样对Redshift表进行分区吗?
  4. 在选择SORTKEY或DISTKEY时,我应该考虑什么?
profile picture
EXPERTE
gefragt vor 5 Monaten39 Aufrufe
1 Antwort
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
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen