为了解决倾斜问题,我们支持了动态扫描。将协调节点内部分成DataThread 和 ControlThread,其中DataThread 负责收集汇总元组,ControlThread 负责控制每个扫描算子的扫描进度。
每个算子控制每个节点上scan 算子的扫描进度,每个节点上scan 算子再扫描下一 个块的数据时会向QC 节点进行请求查询,从而获得下一个扫描的目标块,使得扫 描快的工作进程能多扫描逻辑的数据切片。
此外,尽管是冬天分配,过程中我们也尽量考虑了buffer数据亲和性。另外,每个 算子的上下文均存储在各个worker的私有内存中,协调节点不存储表的相关信息。利用数据共享的特点,还可支持云原生下极致弹性的要求:将Coordinator 全 链路上各个模块所需要的外部依赖存在共享存储上,每个节点都可以看到相同的数 据。同时worker 全链路需要的运行时参数通过控制链路从Coordinator 同步,使 Coordinator 和worker 无状态化。任何节点都可以作为协调节点,确定了协调节点 之后,控制节点再从协调节点获取相关的控制信息。
以上内容摘自《PolarDB for PostgreSQL 开源必读手册》电子书,点击https://developer.aliyun.com/ebook/download/7822 可下载完整版
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
PolarDB 分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 采用 Shared-nothing 与存储计算分离架构,支持水平扩展、分布式事务、混合负载等能力,100%兼容MySQL。 2021年开源,开源历程及更多信息访问:OpenPolarDB.com/about