TIDB单条查询sql内存限制为啥也不生效

【 TiDB 使用环境】生产环境
【 TiDB 版本】8.5.1
【复现路径】
【遇到的问题:问题现象及影响】tidb的tidb_mem_quota_query已经设置大概8G,且tidb_mem_oom_action的值为CANCEL。为啥集群里,单个查询sql,还是能达到18.2G哇 :sob:





单条限制吧,你下班那个图是单条sql内存使用?

image
最后一张图,不是;倒数第二张图,是单条sql的,18.2G

查询全局参数看看设置的是多少?不带global是查的会话参数。

好像确实有些场景限制不住,可以考虑估计再做个监控,对遗漏的sql进行捕杀

会话没有单独设置哦,这个截图,就是全局的

看看这两个执行一样么?

SELECT @@GLOBAL.tidb_mem_quota_query;

SELECT @@SESSION.tidb_mem_quota_query;

是一样的


:thinking:那应该不是这里的原因。

捞一下帖子

查查日志,看看有没有和内存相关的错误
实在不行,重启下应该有帮助(重启后再看看值有没有变化)

tidb_enable_rate_limit_action

该变量在单条查询仅涉及读数据的情况下,对内存控制效果较好。若还存在额外的计算操作(如连接、聚合等),打开该变量可能会导致内存不受 tidb_mem_quota_query 控制,加剧 OOM 风险。

https://docs.pingcap.com/zh/tidb/v7.5/troubleshoot-tidb-oom/
oom帮助里,提了下这个变量的问题

这个变量我看过,我们是关闭的,所以不满足这一点;

这个sql是走tikv还是tiflash

这个sql是个联合查询,关联了好几张表,有一张表是tiflash,其余表都是tikv

版本吗

执行计划被优化了吧