out of memory quota

这个SQL占用的内存超时了1G,有没有办法确认是哪张表占用的啊

因为我把SQL的select 字段删除几个就正常了

SQL 不是在这么…

SQL我有,就是不知道是哪个子查询占用的内存多

或是查询了哪张表占用的内存多 ,用 explain analyze 查看内存占用也不是很多

把dashboard上的执行计划展开,最右边有显示每一个算子占用的内存,然后你再根据执行计划就知道是哪个表占用的多了

我删了一些字段能执行了,但是这里还是显示使用了1G

image
这个地方展开 执行计划后面有内存的使用情况


这里的内存是累加的吧

tidb_mem_quota_query 这个变量在 5.0.2 版本,是不是不能全局设置啊

系统变量 | PingCAP Docs

看有磁盘使用,SQL 用了落盘啊。

不过看执行计划内存用的是不多,难道是统计的不对 :thinking:

我全部更新一下统计信息试试

上面的执行计划只是一部分,太多了没截全

sql复杂的情况下还是调整内存吧,1G的内存限制确实有点小,我们一般设置的是10G

一个SQL最高占用10G,会不会把服务器的内存OOM

这个SQL是复杂 的,但是数据量不大

不报错的情况下,6-7秒就能查出来

这个风险确实是有的,但是处理好sql语句,基本上不会出现服务器oom的情况