stream load时 exec_mem_limit 参数的理解

【详述】stream load时 exec_mem_limit 设置为40G,导入数据为1T;
执行stream load时,报错了: W0106 18:46:42.344166 14370 stream_load_executor.cpp:94] fragment execute failed, query_id=05415a26830557d6-c04d0a8a2050b684, err_msg=Memory exceed limit. fragment: 05415a26-8305-57d6-c04d-0a8a2050b685 Used: 2149204128, Limit: 2147483648. Mem usage has exceed the limit of single query, You can change the limit by set session variable exec_mem_limit., id=05415a26830557d6-c04d0a8a2050b684, job_id=-1, txn_id=1016, label=abc2526 ;
从这个日志看似乎exec_mem_limit并没有起作用,所以想问一下,exec_mem_limit这个参数具体的作用是什么呢?为什么设置成40G,这里报错信息显示是2G呢?为什么会出现这个报错呢?以及如果想研究stream_load与exec_mem_limit参数使用的代码主要是在哪部分呢?
【导入/导出方式】stream load
【背景】就正常建表,查询
【业务影响】
【StarRocks版本】例如:2.0
【集群规模】
【机器信息】
【附件】

sream load 官网文档要是设置load_mem_limit,设置为0表示与exec_mem_limit一致,我是用2.0版本,查询一个宽表(8行*6605列),global exec_mem_limit设置为8589934592,内存不够用 :joy:

Memory exceed limit. Used: 8362547152, Limit: 8589934592. Mem usage has exceed the limit of single query, You can change the limit by set session variable exec_mem_limit.

select * 查询吗?这个表数据量多大

数据量不大varchar类型6个,其他都是浮点数,回话内存设置到了16G才可以正常查询,行数在变大,我没有做测试