This is an automated email from the ASF dual-hosted git repository.

zouxinyi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new faa8a6425e6 [chore](sink) `enable_parallel_result_sink` default value 
is changed to false (#43933)
faa8a6425e6 is described below

commit faa8a6425e692f9604e342800c6143b79ca9008e
Author: Xinyi Zou <[email protected]>
AuthorDate: Tue Nov 19 12:02:49 2024 +0800

    [chore](sink) `enable_parallel_result_sink` default value is changed to 
false (#43933)
    
    ### What problem does this PR solve?
    
    Problem Summary:
    
    For most queries, result sink will not become a performance bottleneck,
    but the parallel result sink will increase the pressure of RPC between
    fe and be.
---
 .../main/java/org/apache/doris/qe/SessionVariable.java    |  2 +-
 .../java/org/apache/doris/utframe/AnotherDemoTest.java    | 15 ++++++++++++++-
 .../src/test/java/org/apache/doris/utframe/DemoTest.java  | 15 ++++++++++++++-
 3 files changed, 29 insertions(+), 3 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java 
b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
index 08400502037..eb0a669e05b 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
@@ -1203,7 +1203,7 @@ public class SessionVariable implements Serializable, 
Writable {
     private boolean enableSyncRuntimeFilterSize = true;
 
     @VariableMgr.VarAttr(name = ENABLE_PARALLEL_RESULT_SINK, needForward = 
true, fuzzy = true)
-    private boolean enableParallelResultSink = true;
+    private boolean enableParallelResultSink = false;
 
     @VariableMgr.VarAttr(name = "sort_phase_num", fuzzy = true, needForward = 
true,
             description = 
{"如设置为1,则只生成1阶段sort,设置为2,则只生成2阶段sort,设置其它值,优化器根据代价选择sort类型",
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/utframe/AnotherDemoTest.java 
b/fe/fe-core/src/test/java/org/apache/doris/utframe/AnotherDemoTest.java
index 2da5a3cabd8..530fd15a9b6 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/utframe/AnotherDemoTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/utframe/AnotherDemoTest.java
@@ -25,6 +25,7 @@ import org.apache.doris.catalog.OlapTable;
 import org.apache.doris.catalog.Table;
 import org.apache.doris.common.DdlException;
 import org.apache.doris.common.FeConstants;
+import org.apache.doris.planner.ExchangeNode;
 import org.apache.doris.planner.OlapScanNode;
 import org.apache.doris.planner.PlanFragment;
 import org.apache.doris.planner.Planner;
@@ -120,7 +121,8 @@ public class AnotherDemoTest {
         }
         // 5. query
         // TODO: we can not process real query for now. So it has to be a 
explain query
-        String queryStr = "explain select /*+ 
SET_VAR(disable_nereids_rules=PRUNE_EMPTY_PARTITION) */ * from db1.tbl1";
+        String queryStr = "explain select /*+ 
SET_VAR(disable_nereids_rules=PRUNE_EMPTY_PARTITION, "
+                + "enable_parallel_result_sink=true) */ * from db1.tbl1";
         StmtExecutor stmtExecutor = new StmtExecutor(ctx, queryStr);
         stmtExecutor.execute();
         Planner planner = stmtExecutor.planner();
@@ -129,5 +131,16 @@ public class AnotherDemoTest {
         PlanFragment fragment = fragments.get(0);
         Assert.assertTrue(fragment.getPlanRoot() instanceof OlapScanNode);
         Assert.assertEquals(0, fragment.getChildren().size());
+
+        queryStr = "explain select /*+ 
SET_VAR(disable_nereids_rules=PRUNE_EMPTY_PARTITION, "
+                + "enable_parallel_result_sink=false) */ * from db1.tbl1";
+        stmtExecutor = new StmtExecutor(ctx, queryStr);
+        stmtExecutor.execute();
+        planner = stmtExecutor.planner();
+        fragments = planner.getFragments();
+        Assert.assertEquals(2, fragments.size());
+        fragment = fragments.get(0);
+        Assert.assertTrue(fragment.getPlanRoot() instanceof ExchangeNode);
+        Assert.assertEquals(1, fragment.getChildren().size());
     }
 }
diff --git a/fe/fe-core/src/test/java/org/apache/doris/utframe/DemoTest.java 
b/fe/fe-core/src/test/java/org/apache/doris/utframe/DemoTest.java
index 289f6c9902d..f1f9fd7ef23 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/utframe/DemoTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/utframe/DemoTest.java
@@ -26,6 +26,7 @@ import org.apache.doris.catalog.MaterializedIndexMeta;
 import org.apache.doris.catalog.OlapTable;
 import org.apache.doris.catalog.Table;
 import org.apache.doris.common.FeConstants;
+import org.apache.doris.planner.ExchangeNode;
 import org.apache.doris.planner.OlapScanNode;
 import org.apache.doris.planner.PlanFragment;
 import org.apache.doris.planner.Planner;
@@ -108,7 +109,8 @@ public class DemoTest extends TestWithFeService {
 
         // 7. query
         // TODO: we can not process real query for now. So it has to be a 
explain query
-        String queryStr = "explain select /*+ 
SET_VAR(disable_nereids_rules=PRUNE_EMPTY_PARTITION) */ * from db1.tbl1";
+        String queryStr = "explain select /*+ 
SET_VAR(disable_nereids_rules=PRUNE_EMPTY_PARTITION, "
+                + "enable_parallel_result_sink=true) */ * from db1.tbl1";
         StmtExecutor stmtExecutor = new StmtExecutor(connectContext, queryStr);
         stmtExecutor.execute();
         Planner planner = stmtExecutor.planner();
@@ -117,5 +119,16 @@ public class DemoTest extends TestWithFeService {
         PlanFragment fragment = fragments.get(0);
         Assertions.assertTrue(fragment.getPlanRoot() instanceof OlapScanNode);
         Assertions.assertEquals(0, fragment.getChildren().size());
+
+        queryStr = "explain select /*+ 
SET_VAR(disable_nereids_rules=PRUNE_EMPTY_PARTITION, "
+                + "enable_parallel_result_sink=false) */ * from db1.tbl1";
+        stmtExecutor = new StmtExecutor(connectContext, queryStr);
+        stmtExecutor.execute();
+        planner = stmtExecutor.planner();
+        fragments = planner.getFragments();
+        Assertions.assertEquals(2, fragments.size());
+        fragment = fragments.get(0);
+        Assertions.assertTrue(fragment.getPlanRoot() instanceof ExchangeNode);
+        Assertions.assertEquals(1, fragment.getChildren().size());
     }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to