【问题标题】:Amazon Redshift optimizer (?) and distribution stylesAmazon Redshift 优化器 (?) 和分发方式
【发布时间】:2018-05-02 19:25:02
【问题描述】:

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

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

这引出了一些问题?

1) “优化器”的作用是什么?是否跨计算节点重新排列数据以提高每个新查询的性能?

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

3) 你能更好地解释一下 3 种分发方式(EVEN、KEY、ALL),尤其是 KEY 方式吗?

补充问题:

1) 领导节点有记录吗?

【问题讨论】:

    标签: amazon-web-services amazon-redshift


    【解决方案1】:

    澄清几点:

    • Distribution Key 不是一个提示——数据实际上是根据 key 分布的
    • 在运行查询时,数据不会“移动”——相反,数据的副本可能会发送到其他节点,以便可以在特定节点上连接数据,但数据不会驻留 在目标节点上
    • 优化器实际上并没有“做”任何事情——它只是计算节点将遵循的过程(Redshift 显然编写了发送到每个节点的 C 程序)

    您真正需要know about the Optimizer 的唯一事情是:

    查询优化器

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

    来自Data Warehouse System Architecture

    领导节点

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

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

    Leader Node 不包含任何数据(除非您启动单节点集群,在这种情况下,Leader Node 和 Compute Node 使用同一台服务器)。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-29
      • 2014-12-10
      • 2015-03-26
      • 2018-03-15
      • 2014-12-08
      • 1970-01-01
      相关资源
      最近更新 更多