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语句吧,不能无限制的使用内存