写点什么

KunlunDB 查询优化(一)

作者:KunlunDB
  • 2022 年 5 月 23 日
  • 本文字数:984 字

    阅读完需:约 3 分钟

查询优化流程

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

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

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

优化后的算子分为两类:

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


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

全局执行流程如下:



优化流程如下:



最大下推策略如下:





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


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.zettadb.com/ 获取更多信息并且下载昆仑数据库软件、文档和资料。

KunlunDB 项目已开源

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

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

发布于: 刚刚阅读数: 2
用户头像

KunlunDB

关注

还未添加个人签名 2022.03.09 加入

还未添加个人简介

评论

发布
暂无评论
KunlunDB 查询优化(一)_MySQL_KunlunDB_InfoQ写作社区