enable_spill设置为ture。spill_model参数设置数据落盘问题

【详述】enable_spill设置为ture。spill_model参数设置为auto,达到内存使用阈值:是指be的query_pool(查询使用的总内存吗?)。达到该内存限制后才落盘吗?

是指单个查询内存限制的80%,query_mem_limit * spill_mem_limit_threshold。
每个算子会先尝试按照不spill的方式执行,如果内存够的话那就和不spill没区别,内存不够的时候才触发spill。
具体来讲,每个算子每次处理数据之前,会根据自己当前的内部状态做个预估,处理即将到来的chunk额外需要申请多少内存,然后尝试预留这么多内存。
如果预留完以后还没超过整个查询内存上限的80%,那就不用spill,否则的话就触发spill。
80%是由spill_mem_limit_threshold控制的,如果查询占用的内存超过了query_mem_limit * spill_mem_limit_threshold,就会触发spill。

如果一个大的查询设置了spill=true,还是经常包内存不足错误。是不是可以对该查询session设置query_mem_limit小一些。然后让查询数据落盘,从而不报内存不足错误?

是的,可以尝试下

query_mem_limit设置小了。还是报内存不足错误。不知道还有什么方法可以保证查询不报存储不足错误?查询可以慢一些(因为是写物化视图报错,写入物化视图时可以接受慢一些)

SQL是怎样的,目前算子落盘只能缓解由于聚合、排序或join导致的内存占用,如果是表达式计算比较消耗内存,可能无法缓解

或者试下把SET spill_mode = true;

CREATE MATERIALIZED VIEW dm_test_mv (phone, event_time, sex, age)
DISTRIBUTED BY HASH(phone, event_time)
REFRESH MANUAL
PROPERTIES (
“replication_num” = “3”,
“replicated_storage” = “true”,
“storage_medium” = “HDD”
)
AS
WITH t (phone, p_day) AS
(SELECT t_1.phone, t_1.p_day
FROM (SELECT a.phone, a.p_day
FROM a
GROUP BY a.phone, a.p_day
UNION ALL
SELECT b.phone, b.p_day
FROM b
GROUP BY b.phone, b.p_day
) t_1
GROUP BY t_1.phone,
t_1.p_day
) ,
t1 (phone, p_day, tag_value) AS
(SELECT a.phone, a.p_day, max(a.sex) AS tag_value
FROM a
GROUP BY a.phone, a.p_day
) ,
t2 (phone, p_day, tag_value) AS
(SELECT a.phone, a.p_day, max(a.age) AS tag_value
FROM a
GROUP BY a.phone, a.p_day
) ,
SELECT t.phone,
t.p_day AS event_time,
t1.tag_value AS sex,
t2.tag_value AS age
FROM t
LEFT JOIN t1 ON (t.phone = t1.phone) AND (t.p_day = t1.p_day)
LEFT JOIN t2 ON (t.phone = t2.phone) AND (t.p_day = t2.p_day)

代码没写完,大概是这样的。单表数据量有3亿。大小在40G以上。刷新物化视图的时候经常报内存不足错误

这个我试了设置成SET spill_mode=force。query_mem_limit设置小了,仍然报错。

可以的话,辛苦告知下starrocks的版本,整理下物化视图相关表的定义、物化视图SQL的explain执行计划以及报错的信息,我们排查下

在请教一下,官网说3.1开始,支持show profilelist。然后可以通过EXPLAIN ANALYZE 来生成profile。为什么我使用的3.1.0版本不知道,同时也不支持explain analyze。这是要怎么设置才可以吗?

升到3.1最新的

我的版本是3.1.0,请问 spill_mem_limit_threshold 这个参数我怎么才能看到呢

在请问一下,我的异步定时物化视图刷新,比如定义每10分钟刷新一次,但是10分钟没有刷新完成。下一个10分钟会启动定时刷新物化视图吗?如果启动,那两个任务同时进行物化视图刷新?