KunlunBase 查询优化(一)

前面介绍了KunlunBase的架构以及技术,应该会有朋友好奇其查询优化的过程吧,本篇章带来的是查询优化这一块的具体流程介绍,后续也会出一篇实例来举例演示。

当然后续也会对KunlunBase的其它技术方面(比如数据分片这些)做实例演示,以方便大家去了解KunlunBase。

查询优化流程

KunlunBase是计算和存储分离的分布式数据库系统,当一条查询SQL发送到KunlunDB任一计算节点(CN)时,KunlunBase语法解析器(Parser)首先会对原始查询文本做出解析以及一些简单的合法性验证,之后会对查询做逻辑优化:如查询重写,分区修剪,列裁剪,谓词下推等。

KunlunBase在逻辑优化过程中会采取最大下推的策略。

计算下推不但可以避免CN和DN间数据网络交互还可以充分利用多分片并发执行的能力和各个DN资源,加速查询。

优化后的算子分为两类:

  • 可以下推的算子:RemoteScan将该算子推送到对应的数据节点上执行,执行完成后拉取相应的数据到计算节点做后继处理。支持下推的算子包括:过滤条件,如WHERE或HAVING中的条件。聚合算子,如COUNT,GROUP BY等,会分成两阶段进行聚合计算。排序算子,如ORDER BY,JOIN和子查询。Project,投影操作。Distinct排重。

  • 无法下推的部分算子:如跨 shard 的join,需要将数据从数据节点拉取到计算节点做计算,优化器会选择最优的方式来执行,如选择合适的并行度策略等

   

全局执行流程如下:

优化流程如下:

最大下推策略如下:

综述:为获取最大性能,在定义分区键时要充分考虑业务在执行SQL 语句的场景,以最大限度避免跨节点数据操作

项目已开源

【GitHub:】
https://github.com/zettadb

【Gitee:】
https://gitee.com/zettadb

原文链接:

优化流程 - Powered by MinDoc (kunlunbase.com)icon-default.png?t=M666http://www.kunlunbase.com:8181/docs/b/b-1dnbl50k71v44

推荐阅读:

KunlunBase架构介绍 - Powered by MinDoc (kunlunbase.com)icon-default.png?t=M666http://www.kunlunbase.com:8181/docs/b/b-1dnl0ff08vm42KunlunBase技术优势介绍 - Powered by MinDoc (kunlunbase.com)icon-default.png?t=M666http://www.kunlunbase.com:8181/docs/b/b-1dnl0hidnehicKunlunBase技术特点介绍 - Powered by MinDoc (kunlunbase.com)icon-default.png?t=M666http://www.kunlunbase.com:8181/docs/b/b-1dnl0gmd9l44gKunlun-Storage vs PostgreSQL OLTP 测试 - Powered by MinDoc (kunlunbase.com)icon-default.png?t=M666http://www.kunlunbase.com:8181/docs/b/b-1dq86ad4auj8ePostgreSQL vs MySQL TPC-H 测试 - Powered by MinDoc (kunlunbase.com)icon-default.png?t=M666http://www.kunlunbase.com:8181/docs/b/b-1dp6drao3djef

END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值