跳至主要內容

排序下推

Klustron大约 1 分钟

排序下推

前言

前面2篇文章我们介绍 Klustron(原KunlunBase)的查询优化流程程及 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个数据节点执行,从计算节点拉取符合条件的值到计算节点排序,排序后反馈给客户端。

END