Greenplum Database的分布式查询技术优化_第1页
Greenplum Database的分布式查询技术优化_第2页
Greenplum Database的分布式查询技术优化_第3页
Greenplum Database的分布式查询技术优化_第4页
Greenplum Database的分布式查询技术优化_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Greenplum Database的分布式查询技术优化内容安排Greenplum Database架构分布式查询计划和分布式执行器如何修改Planner生成分布式查询计划其他关于分布式查询计划的细节Greenplum Database架构Greenplum是多个Postgres实例(segment)构成的集群一个segment作为Master, 其余的是数据节点(也负责计算)Share Nothing架构, 不同的segment直接没有数据共享Catalog在Master上是完整的, Segment上也维护一部分StandBy和Mirror也是segment, 和Master, Primar

2、y在不同机 器gp_segment_configuration维护了集群的架构信息Greenplum Database架构gp_segment_configuration为什么需要MPP架构MPP(Massively Parallel Processing)数据量太大, 单机存不下, 因此只能将数据分片存到不同机器数据量太大, 期待靠并行计算提升性能, 因此需要分布式执行MPP数据库必须解决的问题数据分片策略(Greenplum支持hash, random, replicated)分布式查询计划(Locus, Motion)分布式执行器(Slice, Gang, Dispatch)简单的执行策

3、略在master上利用做出单机的查询计划, 下发到各个segment执 行Master汇总各segment结果会返回给客户端类似中间件, 支持的查询比较简单(不涉及到跨segment数据连 接)复杂查询( join, agg等)如汇总到单机执行效率太低分布式查询例子分布式执行器必然涉及到多组进程协同工作必须正确处理多组进程之间的数据通信分布式查询计划SPMD(single program, multiple data)查询计划切片查询计划能描述数据通信典型的Greenplun分布式执行流程分布式类型系统:locus分布式查询计划需要对数据分布建模Greenplum引入locus的概念基础表的s

4、can path的locus从分布策略中获取 gp_distribution_policyMotion path可以改变locus类型locus可以看做是path的分布式意义下的类型在Postgres的Path结构里加了locus结构自底向上推理每个path的locusLocus的种类和具体例子Locus的推理cdbpathlocus_from_baserel(由gp_policy设置tablescan的 locus)Catalog: entryTable distributed replicated: seggeneralTable distributed by (c1): hash loc

5、usTable distributed randomly: strewn locuscdbpathlocus_from_exprs(构建hash locus)cdbpathlocus_from_subquery从subplan获取locus利用plan的flow信息Motion path会改变locusGather motion: 变成singleQE或者entryRedistribute motion: 变成hash, 或改变分布键Broadcast motion: 变成replicatedJoin涉及到最复杂的locus推理, 是分布式查询计划的重中之重Policy示例Catalog没有p

6、olicy, 发现rangetable是catalog, locus设为entryPath locus示例小结: 分布式查询第一步构建基础设施LocusPolicyFlow开发的技术新增catalog在Postgres关键数据新增字段推理和维护新增字段Motion path and Join pathpgpgeneral strewn = strewn general hash = hashgenerate_series(1, 5)a joint on a = t.c - t randomly distssBstrewn strewn = strewn broadcast one patht

7、join t on true- t randomly distsstrewn hash = hash redistributed one patht1 join t2 on t1.a = t2.a- t1 randomly dist- t2 hash dist on a核心代码在函数cdbpath_motion_for_join本质是在处理分布式关系代数通过motion促成局部信息完备, 这样不用考虑跨segment的连 接shhssstrewn strewn = hash redistributed both patht1 join t2 on t1.a = t2.a- t1 randoml

8、y dist- t2 randomly distRhRRhhhRhash hash = hash redistributed one patht1 join t2 on t1.a = t2.a and t1.b = 1- t1 hash dist on (a, b)- t2 hash dist on (a, b)外连接和motion以left join为例说明问题, 右值会补null左表不能呈现广播态(加广播motion, 复制表, general等)但是左表可以重分布(重分布不产生duplicate值)12seg013seg114seg21 left join 2,3,4Result pla

9、nnode技巧未必只有motion才能改变locusGreenplum优化了Result plannode针对类广播locus(general等)如果需要重分布 可以避免gather到singleQE再重分布Append path locus)先将所有分片的locus视为随机分片(strewn locus第一遍扫描推理表得出最终的locus类型如果是分片类型, 第二遍扫描判断是否co-locate最终给每个subpath增添适合的motion path推理规则(按顺序):有entry则全部entry; 有singleQE则全部singleQEStrewn和广播类则gather成singleQE

10、(这点有优化空间:利用 result)General不改变其它locus类型相同的locus不产生新的locusursive CTE的locus和motionRecursive CTE是包含两个子节点的plannode 非递归部分用来初始化worktable递归部分的worktable有可能和别的表joinWorktable scan执行器依赖Recursive Union执行器的状态, 因此这 两个执行器节点不能跨进程(不能被motion切割)Worktable scan path的locus设置的与非递归部分的一致 Worktable scan path和其他表join的时候不许在Work

11、table scanRecpath上加motion非递归部分是复制表locus的话, 必须转变成singleQE多阶段hash agg的代价模型Greenplum的hash agg执行器支持spill和streamming模式Streamming: 两阶段agg的查询计划, 一阶段的hash表满了, 将hash 表的内容推送到下一阶agg, 然后清空Group数目少, 两阶段查询计划可以避免倾斜Group数目多, 两阶段查询计划的第一个阶段存在无用功精准的代价模型至关重要Distinct数的分布式模型一阶段Hash表spill(或者streamming)的数量分布式环境下的distinct值一阶段hash表spill(streaming)数量估计得到查询计划后的工作对子查询的处理Update或delete语句的explicit motionUpdate或delete如果涉及到plan qual底层查询可能涉及 motionModifyTable执行节点只能找到本地tuple的CTID需要显示的motion物归原主更新分布键的查询计划Greenplum支持更新分布键(极少MPP数据库支持这个特性)引入的技术: split update总结基

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论