更新时间:2025-05-29 GMT+08:00

Data Node Scan

算子说明

当GUC参数enable_fast_query_shipping的值设置为on时,优化器会尝试语句下推,将查询语句从CN发送到DN进行执行,然后将执行结果返回给DN。

典型场景

可以下推的查询语句

示例

可以下推的查询

--数据准备。
gaussdb=# SET enable_fast_query_shipping=on;
gaussdb=# DROP TABLE IF EXISTS t1;
gaussdb=# CREATE TABLE t1 (id int, number int, grade int);

--执行结果。 
gaussdb=# EXPLAIN SELECT *  FROM t1 where id > 1;
                    QUERY PLAN
--------------------------------------------------
 Data Node Scan  (cost=0.00..0.00 rows=0 width=0)
   Node/s: All datanodes
(2 rows)

因为实际计划在DN上生成,若需要查看DN上的执行计划可以设置参数max_datanode_for_plan观察DN上的计划。

--打开参数
gaussdb=# SET max_datanode_for_plan = 1;
--执行结果
gaussdb=# EXPLAIN SELECT *  FROM t1 where id > 1;
                             QUERY PLAN
--------------------------------------------------------------------
 Data Node Scan  (cost=0.00..0.00 rows=0 width=0)
   Node/s: All datanodes

 Remote SQL: SELECT id, "number", grade FROM public.t1 WHERE id > 1
 Datanode Name: datanode1
   Seq Scan on t1  (cost=0.00..34.31 rows=648 width=12)
     Filter: (id > 1)
(8 rows)

--删除。
gaussdb=# DROP TABLE IF EXISTS t1;

信息名称

含义

Data Node Scan

算子的名称。

Node/s: All datanodes

表示会下发到所有DN