KunlunDB 查询优化(三)排序下推
前言
前面 2 篇文章我们介绍 KunlunDB 的查询优化原理和 Project 和 Filter 下推演示(KunlunDB 查询优化(一),KunlunDB查询优化(二)Project和Filter下推),本节讲述排序查询优化之排序下推。
一、order by 下推
一条含有 order 的 SQL 的执行计划在如下生成过程中,Sort 被下推到 RemoteScan 算子里面。
Sort 下推的操作是异步方式,指令在各个数据节点并行执行,过滤数据后,将排序后的结果反馈给计算节点,降低了计算节点的负载。
下面我们来测试查看查询下推的执行计划
为支持排序下推,需要在 kunlunDB 设置如下如下参数为 true:
set enable_remote_orderby_pushdown=true;
测试语句:
select c_zip from customer1 order byc_zip;
查看执行计划:
explain select c_zip fromcustomer1 order by c_zip;
根据上面的执行计划,RemoteScan 在传达了远程排序操作到每一个相关的存储节点,存储节点将结果反馈给计算节点再做 Merge Append。
如果关闭排序下推的特性,执行计划会发生变化,排序操作将在计算节点执行。
演示如下:
set enable_remote_orderby_pushdown=false;
排序操作将在计算节点执行:
语句的执行过程:语句在计算节点改写后,下发到 2 个数据节点执行,从计算节点拉取符合条件的值到计算节点排序,排序后反馈给客户端。
二、性能比对
性能比对环境:
复制下方链接登录 kunlunDB 在线体验系统:
zettatech.tpddns.cn:8000/ci/index.php/Main/PGList
在 SQL 框中输入排序操作的语句,按执行键执行。
左边窗口是 KunlunDB 社区版本的执行信息(社区版不支持排序下推操作),右边窗口是 KunlunDB 企业版有下推操作的执行信息。
对比可以发现,order by 下推后,执行效率提高了(执行时间由 4 毫秒下降到 3 毫秒)
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
版权声明: 本文为 InfoQ 作者【KunlunDB】的原创文章。
原文链接:【http://xie.infoq.cn/article/68c5d7f0c0586388d5aaa9eee】。文章转载请联系作者。
评论