格林梅利中有一个400 GB的表。以下查询在服务器上拥有所有空闲资源(4个数据段)时花费了相当长的时间
从tablex中选择max(date_key);表结构如下:
Compression
发布于 2021-05-31 14:02:19
主服务器接收、分析和优化查询。生成的查询计划要么是并行的,要么是目标的。主模块向所有段分派并行查询计划,如图1所示,主模块将目标查询计划分派到单个段,如图2所示,每个段负责对自己的数据集执行本地数据库操作。大多数数据库操作--如表扫描、连接、聚合和排序--并行地跨所有段执行。每个操作都是在独立于存储在其他段数据库中的数据的段数据库上执行。某些查询只能访问单个段上的数据,例如单行插入、更新、删除或选择操作或筛选表分发键列上的查询。在这样的查询中,查询计划不是发送到所有段,而是针对包含受影响或相关行的段。
了解格林梅查询计划查询计划是格林梅利数据库将执行的一组操作,以生成查询的答案。计划中的每个节点或步骤表示数据库操作,如表扫描、连接、聚合或排序。从下到上阅读和执行计划。除了常见的数据库操作(如表扫描、联接等)之外,还有一个名为type的操作类型。运动操作包括在查询处理期间在段之间移动元组。注意,并不是每个查询都需要一个动议。例如,目标查询计划不需要数据在互连之间移动。为了在查询执行过程中实现最大的并行性,格林梅因将查询计划的工作划分为片。一个片段是计划的一部分,分段可以独立地工作。在计划中发生运动操作的任何地方,都会对查询计划进行切片,在运动的每一侧都有一个切片。例如,考虑以下涉及两个表之间连接的简单查询:选择customer,从(cust_id)中选择dateCol =‘0430-2016’;
链接:https://docs.greenplum.org/6-9/admin_guide/query/topics/parallel-proc.html
https://stackoverflow.com/questions/67737174
复制相似问题