分类标签归档:Greenplum

Greenplum 查询优化器


Greenplum 查询优化器

Greenplum 查询优化器介绍

对于给定的查询语句,找到“代价”最小的查询计划

查询计划介绍

一个查询计划就是由计划节点组成的树
每个计划节点代表一个特定类型的处理操作,计划节点中包含了执行器执行所需的全部信息
在执行时,计划节点产生输出元组
一般来说,扫描节点从数据表中获取输入元组
大部分其他节点从它们的子计划节点中获取输入元组

计划节点的类型

  • 扫描节点
    • 顺序扫描,索引扫描,位图扫描
  • 连接节点
    • Nestloop, hash, merge
  • 非SPJ节点
    • Sort, aggregate, set operation(UNION etc)

Gre

Read more

Greenplum 执行器


Greenplum 执行器

什么是执行器

执行器处理一个由执行计划节点组成的树,并返回查询结果

原发性扫描节点

scan

非原发性扫描节点

join agg

执行模型

迭代模型(pipeline模型,Pull方式)

每一个执行节点实现一个next函数,并遵循

  1. 每一次调用,返回一个tuple或者返回NULL
  2. 实现一个循环,每次调用执行子节点的next函数作为输入并处理

优点:易懂,资源使用少,通用性好
缺点:迭代次数多,代码局部性差,CPU cacheline不友好

向量化模型(Vectorization Model)

和迭代模型一样,每一个执行节点实现一个next函数,区别在于
每一次迭

Read more

Greenplum 架构


Greenplum 架构

Greenplum 整体架构

Greenplum 本质上是单机Postgres组成的数据库集群,对外提供统一的数据库接口,并针对集群处理做了大量优化
基于MPP无共享拓扑
数据分片 分区 分表 分库

分片:分布到不同的节点
分区:概念比较广泛,水平分区、垂直分区

0. 系统空闲状态

postmaster 是数据库主进程,监控用户请求

1. 客户端建立会话连接

客户端通过libpq协议发送连接请求给Greenplum master节点

master节点上postmaster进程会监听连接请求,并处理

2. Master fork 一个进程处理客户端请求

master节点

Read more