KunlunBase 查询优化(一)

2022-01-12 00:00:00 查询 数据 节点 下推 算子

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

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


查询优化流程

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

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

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

优化后的算子分为两类:
 
  • 可以下推的算子:RemoteScan将该算子推送到对应的数据节点上执行,执行完成后拉取相应的数据到计算节点做后继处理。支持下推的算子包括:过滤条件,如WHERE或HAVING中的条件。聚合算子,如COUNT,GROUP BY等,会分成两阶段进行聚合计算。排序算子,如ORDER BY,JOIN和子查询。Project,投影操作。Distinct排重。
     
  • 无法下推的部分算子:如跨 shard 的join,需要将数据从数据节点拉取到计算节点做计算,优化器会选择优的方式来执行,如选择合适的并行度策略等
   
全局执行流程如下:
 

 

优化流程如下:

大下推策略如下:

 



  

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

点击阅读原文

推荐阅读

KunlunBase架构介绍
KunlunBase技术优势介绍
KunlunBase技术特点介绍
KunlunBase集群基本概念介绍

END

昆仑数据库是一个HTAP NewSQL分布式数据库管理系统,可以满足用户对海量关系数据的存储管理和利用的全方位需求。
应用开发者和DBA的使用昆仑数据库的体验与单机MySQL和单机PostgreSQL几乎完全相同,因为首先昆仑数据库支持PostgreSQL和MySQL双协议,支持标准SQL:2011的 DML 语法和功能以及PostgreSQL和MySQL对标准 SQL的扩展。同时,昆仑数据库集群支持水平弹性扩容,数据自动拆分,分布式事务处理和分布式查询处理,健壮的容错容灾能力,完善直观的监测分析告警能力,集群数据备份和恢复等 常用的DBA 数据管理和操作。所有这些功能无需任何应用系统侧的编码工作,也无需DBA人工介入,不停服不影响业务正常运行。
昆仑数据库具备全面的OLAP 数据分析能力,通过了TPC-H和TPC-DS标准测试集,可以实时分析新的业务数据,帮助用户发掘出数据的价值。昆仑数据库支持公有云和私有云环境的部署,可以与docker,k8s等云基础设施无缝协作,可以轻松搭建云数据库服务。
请访问 http://www.kunlunbase.com/ 获取更多信息并且下载昆仑数据库软件、文档和资料。
KunlunBase项目已开源
【GitHub:】
https://github.com/zettadb
【Gitee:】
https://gitee.com/zettadb

相关文章