starrocks 3.1.6版本部分sql开启spill 功能,内存占用比未开启spill功能还多

为了更快的定位您的问题,请提供以下信息,谢谢
【详述】问题详细描述
【背景】做过哪些操作?
【业务影响】
【是否存算分离】非存算分离
【StarRocks版本】3.1.6
【集群规模】例如:3fe(1 follower+2observer)+3be
【机器信息】CPU虚拟核/内存/网卡,例如:16C/32G/万兆
截图对应同一个sql第一个内存使用是开启中间结果落盘的,开启后be spill目录也有文件写出,设置参数不同:
set enable_spill=true;
set spill_mode=“force”;

image
第二个未开启,sql 主要用了with 语句+lag 窗口函数+left join

在执行该sql期间 有没有其他sql或者导入,看下 fe.audit.log

没有,只有这个sql在执行,试过好几次,情况都是一样的

force 模式要构建memory table,对于一些低基数聚合来说可能内存会用的多了一些,后面的版本优化了这类case

这种case可以尝试使用限定mem_limit + auto 模式

mem_limit 不好确定限制多少,刚刚限制了2G,直接报 Used: 2184424109, Limit: 2147483648. Mem usage has exceed the limit of single query, You can change the limit by set session variable query_mem_limi

限制大了,又直接和没限制的情况一样