Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

选择数据分配方式

将数据加载到表中时,Amazon Redshift 根据表的分配方式将表中的行分配到各个计算节点。在执行查询时,查询优化程序根据执行联接和聚合的需要将行重新分配到计算节点。选择表分配方式的目的是通过在执行查询前将数据放在需要的位置来最大程度地减小重新分配步骤的影响。

本部分介绍 Amazon Redshift 数据库中数据分配的原理以及为您的每个表挑选最佳分配方式的方法。

数据分配概念

节点和切片

Amazon Redshift 集群是一组节点。集群中的每个节点拥有自己的操作系统、专用内存和专用磁盘存储。有个节点是领导节点,它负责将数据和查询处理任务分配到计算节点

计算节点的磁盘存储分成一系列切片。每个节点的切片数取决于集群的节点大小。例如,每个 DS1.XL 计算节点有两个切片,每个 DS1.8XL 计算节点有 16 个切片。所有节点均参与并行查询执行,处理尽可能跨切片均匀分布的数据。有关每个节点大小具有的切片数的更多信息,请转至 Amazon Redshift Cluster Management Guide关于集群和节点

数据重新分配

将数据加载到表中时,Amazon Redshift 根据表的分配方式将表中的行分配到各个节点切片。作为查询计划的一部分,优化程序确定需要将数据块放置在何处,以最好地执行查询。然后,在执行期间,数据被实际移动或重新分配。重新分配可能涉及将特定的行发送到节点以进行联接,或将整个表广播到所有节点。

数据重新分配可能占到查询计划成本的一大部分,其产生的网络流量可能会影响其他数据库操作并降低整个系统的性能。在切实可行的范围内,预测最佳的数据初始放置位置可以尽可能地减少数据分配的影响。

数据分配目标

将数据加载到表中时,Amazon Redshift 根据您在创建表时选择的分配方式将表中的行分配到计算节点和切片。数据分配有两个主要目标:

  • 将工作负载均匀地分配到集群中的节点上。不均匀的分配或数据分配偏斜会导致某些节点执行的工作比其他节点多,从而影响查询性能。

  • 尽量减少查询执行期间的数据移动。如果参与联接或聚合的行已在节点上与其在其他表中联接行并置,则优化程序在查询执行期间不必重新分配过多的数据。

您为数据库选择的分配策略会对查询性能、存储需求、数据加载和维护产生重大影响。通过为每张表选择最佳的分配方式,您可以均衡数据分配并显著提高整个系统的性能。

本页内容: