exec_mem_limit
参数主要与 Doris 的 Backend (BE) 节点相关。这是因为查询的实际执行发生在 BE 节点上,而 Frontend (FE) 节点主要负责查询的解析、优化和调度等工作。
参数归属与作用
-
Backend (BE):
exec_mem_limit
控制的是单个查询在 BE 节点上的内存使用上限。这意味着它直接影响到查询执行阶段能够使用的最大内存量。如果一个查询尝试使用的内存超过了这个限制,Doris 会采取相应的措施(如将部分数据写入磁盘)以避免内存溢出。 -
Frontend (FE): FE 节点并不直接执行查询任务,因此
exec_mem_limit
并不是 FE 的配置参数。不过,在某些情况下,你可以在 FE 上设置一些默认值或全局配置,这些配置可能会被传递给 BE 节点作为其运行时参数的一部分。
设置方法
尽管 exec_mem_limit
是 BE 节点的参数,但可以通过以下几种方式来设置:
-
会话级别设置:通过 SQL 命令在当前会话中设置该参数。
SET exec_mem_limit = 4096000000; -- 设置为大约4GB
这种方式允许你在不重启服务的情况下动态调整内存限制,适用于临时需要增加或减少内存使用的场景。
-
BE 配置文件:修改 BE 节点的配置文件
be.conf
,添加或修改exec_mem_limit
参数。这种方式适合希望对所有查询都应用相同的内存限制的情况。exec_mem_limit=4096000000 # 设置为大约4GB
-
启动参数:也可以通过命令行参数的方式在启动 BE 节点时指定该参数,但这不如前两种方法常用。