doris查询报错err: Error 1105: errCode = 2, detailMessage = Memory limit exceeded:<consuming tracker:...
短信预约 -IT技能 免费直播动态提醒
查询报错信息显示如下
err: Error 1105: errCode = 2, detailMessage = Memory limit exceeded:, failed alloc size 0, exceeded tracker:, limit 2.00 GB, peak used 12.03 GB, current used 12.03 GB>, executing msg:, vsort, while sorting input.>. backend 192.168.30.116 process memory used 59.63 GB, limit 200.00 GB. If query tracker exceed, `set exec_mem_limit=8G` to change limit, details see be.INFO.
解决方法
为了防止用户的一个查询可能因为消耗内存过大。查询进行了内存控制,一个查询任务,在单个 BE 节点上默认使用不超过 2GB 内存。
用户在使用时,如果发现报 Memory limit exceeded 错误,一般是超过内存限制了。
遇到内存超限时,用户应该尽量通过优化自己的 sql 语句来解决。
如果确切发现2GB内存不能满足,可以手动设置内存参数。
显示查询内存限制:
mysql> SHOW VARIABLES LIKE "%mem_limit%";+---------------+------------+| Variable_name | Value |+---------------+------------+| exec_mem_limit| 2147483648 |+---------------+------------+1 row in set (0.00 sec)
exec_mem_limit 的单位是 byte,可以通过 SET 命令改变 exec_mem_limit 的值。如改为 8GB。
mysql> SET exec_mem_limit = 8589934592; #只是针对本次的查询修改,全局加上globalQuery OK, 0 rows affected (0.00 sec)mysql> SHOW VARIABLES LIKE "%mem_limit%";+---------------+------------+| Variable_name | Value |+---------------+------------+| exec_mem_limit| 8589934592 |+---------------+------------+1 row in set (0.00 sec)
(1)以上该修改为 session 级别,仅在当前连接 session 内有效。断开重连则会变回默认值。
(2)如果需要修改全局变量,可以这样设置:SET GLOBAL exec_mem_limit = 8589934592;。设置完成后,断开 session 重新登录,参数将永久生效。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341