如何限制单条sql使用的最大内存

一般是在256g的服务器集群中设置的是tidb_mem_quota_query为10g,供参考。

:thinking:OOM应该是单个节点重启,不是整个数据库。

通常是单个tidb server 进程重启,也有部分情况是tidb server 的某个线程重启。还没见过集群全部节点oom 的

使用tidb还用这么高的配置?

1 个赞

:thinking:越高的配置越能提现TiDB的优越性

tidb_mem_quota_query

这点我觉得特别不好,那一个sql会导致严重的问题

而且我觉得应该是自己连接抛出一个错误更合适

大部分情况下还好。

但是有些大AP场景,如在多表join的场景,尤其涉及大量数据分析的时候,真的很可能一条大SQL搞挂一个tidb-server。

所以对于容易导致OOM的大查询,需要管理员很精细地去考虑设计索引、访问方式、表结构(分区或非分区)、是否引入tiflash列存等因素。不过这个问题在哪个数据库都是需要慎重对待,不仅仅是 TiDB。

嗯,但是大sql搞挂实例那就有点不应该了,我觉得应该抛出错误比较好

我是写脚本控制,这样还可在kill之前把sql给记录下来

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。