由于超出单个SQL查询所允许的内存限制,查询已被取消。请尝试缩小查询范围或增加tidb_mem_quota_query限制,然后再试一次。[conn=3607482257570389131]

Your query has been cancelled due to exceeding the allowed memory limit for a single SQL query. Please try narrowing your query scope or increase the tidb_mem_quota_query limit and try again.[conn=3607482257570389131]
设置了SET GLOBAL tidb_mem_quota_query = 14G
还是不行, 具体应该怎么排查呢

排查啥?你这么大的内存都跑不过去,应该首先考虑优化SQL

可以减少查询范围

看看语句执行的时候的sql占用

你是想找到这个sql是什么嘛?

https://docs.pingcap.com/zh/tidb/stable/identify-expensive-queries#定位消耗系统资源多的查询

找找expensive query ,再看看conn=3607482257570389131 能不能对的上。

这个数字就是日志里面的conn_id。

这条sql之前用的好好的 突然就不行了, 感觉不是sql的问题呀

还是可能是 SQL 问题,发出来执行计划看看

慢查询里可以找到这个失败 SQL 的执行计划

先看看这个sql执行计划

表里的数据变多了或者统计信息不准确了,都有可能导致这个问题。找到sql然后看执行计划就知道了

设置这么大都么有OOM吗

增大内存 虽然可以临时解决问题。后期估计会经常遇到头疼的类似问题。建议分析下sql,看看能不能优化。

控制台里有慢查询吧, 实现不行,搞台大内存的tidb, 专门执行这语句呗

也有可能是数据发生了变化,以前只返回10行,现在返回10亿行了

直接把sql执行计划贴上来吧。。。14G内存都不够

sql没变的话就是数据自身变了呗,数据变多了

让业务修改查询范围吧,14G都OOM,再调大了,别影响数据库的稳定运行

这个应该优化sql语句吧,不能无限制的使用内存