Skip to content

Colocate Join时部分Instance的可用内存与exec_mem_limit参数不一致 #4894

@wyndia

Description

@wyndia

问题描述

Doris版本:DORIS-0.13.9-release

集群信息:15台节点(16核,32线程,64GRAM),其中一台BE与FE混部。

问题:使用Colocate Join关联表格后,在FE Web端查看query日志时发现Instance的可用内存(MemoryLimit)与exec_mem_limit参数设置的不一致。

复现方式

  1. 建立一张带有colocate_with属性的表格并插入任意数据:

    CREATE TABLE `test` (
      `k1` int(11)
    )
    DUPLICATE KEY(`k1`)
    DISTRIBUTED BY HASH(`k1`) BUCKETS 256
    PROPERTIES (
    "colocate_with" = "test"
    );
    
    insert into test select floor(rand()*10000);
    insert into test select floor(rand()*10000);
    ……
  2. 设置相关参数:

    set parallel_fragment_exec_instance_num = 4;
    set exec_mem_limit = 8589934592;
  3. Join自身:

    select count(*) from test a join test b on a.k1 = b.k1;
    
    +----------+
    | count(*) |
    +----------+
    | 5        |
    +----------+
    1 row in set
    Time: 0.040s
    
  4. 进入FE Web页面并打开query日志,将页面下拉到Fragment 1的位置,可以看到其Instance所分配的内存与exec_mem_limit的值(8G)不一致。

    image-20201111215400828

补充

@imay同学提醒,在fe.conf设置query_colocate_join_memory_limit_penalty_factor = 1可以解决此问题。

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/configIssues or PRs related to configurationarea/plannerIssues or PRs related to the query planner

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions