【查询计划和调度】

查询处理顺序:
1. 用户查询请求
2. Master(解析sql、优化sql)
3. Master把任务分配到各个Segment执行
4. 每个segment负责查询自己本节点数据(执行的操作包括:table scan、join、aggregations、sort)
这些都是同时并行执行的、而且都是独立的。
如果某个查询只涉及到单个segment的数据的话,master是不会分配到所有的segment,仅仅是分配至该segment。例如: 单行的增删改查、通过表的分布键过滤后的少量结果集...等等
5. 查询的结果返回给master
6. master再发送给用户
(图: 执行计划-多个segment)

(图: 执行计划-单个segment)
【查询计划】
查看Query Plan的时是从底至上的。
Motion -- 主要是涉及到多个节点之间完成任务的话,节点之间会发生数据移动。
Slice -- GP在执行查询时为了获得最优性能,把任务进行了切片。一个查询计划是根据motion来进行切分的,每个slice以motion作为边界。
Redistribute Motion -- Segment之间移动数据。这个是非常之消耗性能的。在前期表设计的时候就要避免这样的操作。
Gather Motion -- Segment将数据传给Master。不是所有的查询计划都调用gather motion。例如:CREATE TABLE AS SELECT ...这个就没有gather motion,结果被存储到新表里面是不需要经过master的。
eg:SELECT customer,amount
FROM sales JOIN customer USING (cust_id)
WHERE dateCol = '03-06-2012';
查询计划如下图:
(图: 查询计划切片)
【并行查询】
Query Dispather(QD) -- Master节点查询任务处理,负责创建和分配查询计划、收集传送最终结果

Query Executor(QE) -- Segment节点查询处理,负责完成数据的计算、多个QE之间的中间结果通讯。为查询计划的每个slice会被分配到至少一个worker process
Gangs -- 工作于相同slice的查询计划的相关process。当一个slice任务完成后,这个gang会把数据向上级gang传递。内部通信是通过内部进程来控制的。

转载于:https://blog.51cto.com/jackwxh/1311337

gp如何处理查询请求相关推荐

  1. php如何处理查询请求,PHP如何处理Web请求流程

    PHP世界里涌现了很多开发框架,比如Laravel.ThinkPHP等,但不论何总框架,他们在处理Web请求时的模式都是一样的,本文首先阐述PHP开发Web应用的基本架构,然后分别分析Laravel和 ...

  2. php如何处理查询请求,PHP的curl查看header信息的功能(包括查看返回header和请求header)...

    PHP的curl功能十分强大,简单点说,就是一个PHP实现浏览器的基础. 最常用的可能就是抓取远程数据或者向远程POST数据.但是在这个过程中,调试时,可能会有查看header的必要. 如下: ech ...

  3. mysql查询过程从客户端发送查询请求_MySQL查询过程和高级查询

    最近有个需求,要修改现有存储结构,涉及查询条件和查询效率的考量,看了几篇索引和HBase相关的文章,回忆了相关知识,结合项目需求,说说自己的理解和总结. 总体目录如下,上篇介绍了前3小节,分析了索引为 ...

  4. ajxs跨域 php_PHP项目中是如何处理Ajax请求与Ajax跨域的

    PHP项目中是如何处理Ajax请求与Ajax跨域的 发布时间:2020-12-14 16:35:47 来源:亿速云 阅读:98 这期内容当中小编将会给大家带来有关PHP项目中是如何处理Ajax请求与A ...

  5. ASP.NET Core管道深度剖析(3):管道是如何处理HTTP请求的?

    我们知道ASP.NET Core请求处理管道由一个服务器和一组有序的中间件组成,所以从总体设计来讲是非常简单的,但是就具体的实现来说,由于其中涉及很多对象的交互,我想很少人能够地把它弄清楚.为了让读者 ...

  6. Influxdb中Select查询请求结果涉及到的一些数据结构

    女主宣言 本文将给大家介绍的是在Influxdb中Select查询请求结果中涉及到的一些数据结构,对于Influxsql的查询语句不太熟悉的同学,可以在先了解了解: https://docs.infl ...

  7. Spring源码分析之SpringMVC的DispatcherServlet是如何处理Http请求的

    一般我们会在web.xml文件中配置DispatcherServlet,比如如下配置方式: <servlet><servlet-name>dispatcherServlet&l ...

  8. Laravel 底层是如何处理 HTTP 请求的?

    基于 Laravel 框架构建的 Web 应用处理 HTTP 请求的流程也是如此.所有 HTTP 请求都会被转发到单入口文件 public/index.php,处理 HTTP 请求的核心代码如下(忽略 ...

  9. mysql结果集相减_MySQL_(Java)使用JDBC向数据库发起查询请求

    课程相关链接:JDBC编程和MySQL数据库 课程源代码在文章末尾~ Java Database Connectivity 简单来说就是使用Java里面提供的一些类和方法,利用程序链接数据库,进行增删 ...

最新文章

  1. 你要的用户画像实践来了!
  2. 用户体验已成过去时 AI要从公民乃至社会的角度去思考问题
  3. Spring Boot项目利用MyBatis Generator进行数据层代码自动生成
  4. 【Flutter】Dart 数据类型 ( dynamic 数据类型 )
  5. tf.where() 详解
  6. 天气预报c是什么意思_大雪节气将至,为什么老话说:寒风迎大雪,三九天气暖?...
  7. nssl1187-排列【dp,随机卡常,树状数组】
  8. java插入数据库字符串拼接_java中PreparedStatement解决需转义字符向数据库中插入时的转义问题 | 学步园...
  9. cmake 简介-初识
  10. spark structured stream的Update模式
  11. 我们大学的第一桶金!!(更新中。。。)
  12. HCIE Security 华为WAF产品 备考笔记(幕布)
  13. RabbitMq异常处理
  14. [译] JavaScript 中的私有变量
  15. spark python编程 林子雨_林子雨-Spark编程基础Python版-厦门大学数据库室.ppt
  16. Java类加载器的使用
  17. sketchup边线设置_草图大师SketchUp改变模型边线颜色的方法
  18. 【Linux】循序渐进学运维-学习方法篇
  19. “欢迎来到智能城市,我是小武”
  20. 荣耀10青春版支持鸿蒙吗,荣耀10青春版详细评测:又一款年轻群体收割机

热门文章

  1. js中将时间字符串转换为时间戳
  2. 软通动力月薪8K面试题解析
  3. Kafka核心源码解析 - KafkaController源码解析
  4. Visual Studio二次安装时无法更改安装位置解决方案
  5. 文件分片_怎样屏蔽QQ和微信外发文件,同时允许发送截图
  6. JS:正则表达式详细语法基础
  7. Error:No-bean-named-springSecurityFilterChain-available
  8. EL表达式JSON应用
  9. Alpha 冲刺报告2
  10. Datrium公司以几近疯狂的方式提升速度表现