Amazon Redshift优化器(?)和分发方式

时间:2017-11-19 13:28:25

标签: amazon-web-services amazon-redshift

我正在使用Sybex官方学习指南学习Amazon Redshift,第173页有几个短语:

  

您可以配置表的分配方式,以便为Amazon RS提供有关如何对数据进行分区以最好地满足查询模式的提示。运行查询时,优化程序会根据需要将行移动到计算节点以执行任何连接和聚合。

这引出了一些问题?

1)"优化器&#34 ;?的作用是什么?是否跨计算节点重新安排数据以提高每个新查询的性能?

2)如果1)为真并且执行了新的查询完全不同:计算节点中的旧数据会发生什么?

3)你能更好地向我解释3种分配方式(偶数,关键,全部),特别是KEY风格。

额外问题:

1)领导者节点是否有记录?

1 个答案:

答案 0 :(得分:0)

澄清一些事情:

  • 分配键不是提示 - 根据密钥实际分发数据
  • 运行查询时,数据不会“移位” - 而是可以将数据副本发送到其他节点,以便可以在特定节点上连接数据,但数据不会驻留< / em>在目标节点上
  • 优化器实际上并没有“做”任何事情 - 它只是计算节点将遵循的过程(Redshift显然写入发送到每个节点的C程序)

know about the Optimizer唯一需要的是:

  

查询优化工具

     

Amazon Redshift查询执行引擎包含一个支持MPP的查询优化器,并且还利用了面向列的数据存储。 Amazon Redshift查询优化器实现了用于处理复杂分析查询的重要增强和扩展,这些查询通常包括多表连接,子查询和聚合。

来自Data Warehouse System Architecture

  

领导者节点

     

领导节点管理与客户端程序的通信以及与计算节点的所有通信。它解析并开发执行计划以执行数据库操作,特别是获取复杂查询结果所需的一系列步骤。根据执行计划,领导节点编译代码,将编译的代码分发给计算节点,并将一部分数据分配给每个计算节点。

     

只有当查询引用存储在计算节点上的表时,leader节点才会将SQL语句分发到计算节点。所有其他查询仅在领导节点上运行。 Amazon Redshift旨在仅在领导节点上实现某些SQL功能。如果使用任何这些函数的查询引用驻留在计算节点上的表,则会返回错误。

领导者节点不包含任何数据(除非您启动单节点群集,在这种情况下,相同的服务器用作领导节点和计算节点)。

有关分配方式的信息,请参阅:Distribution Styles

如果您真的想了解Redshift,请阅读Redshift Database Developer Guide。如果您只是在攻读解决方案架构师考试,上述链接将足以满足Redshift知识的水平。