如根据不同业务设置tidb实例单个sql内存限制,例如实例1单个sql内存限制2G,实例2单个sql内存限制10G

【 TiDB 使用环境】生产环境
【 TiDB 版本】 v6.4
【复现路径】我有6个tidb实例,有4个给业务1使用,2个给业务2使用,其中业务2报表查询,会耗用大量大量内存,如何针对不同业务设置不同的sql内存限制,目前此参数 set global tidb_mem_quota_query=值在一个tidb实例设置完,会在所有实例都应用相同的值。
我想要实现的是:
例如实例1单个sql内存限制2G,实例2单个sql内存限制10G
【遇到的问题:问题现象及影响】
【资源配置】
【附件:截图/日志/监控】

2 个赞

报表查询用tiflash啊,还用tidb 啊?

手工修改节点下的meta文件可以,但不建议生产环境使用

/home/tidb/.tiup/storage/cluster/clusters/集群名/meta.yaml

1 个赞

报表查询,底层走的tiflash,上层还是要走tidb节点

是的,生产环境还是不能这么配置

给tiflash的业务单独配个tidb server就行了 :crazy_face:

可以去试试修改机器上的tidb-server实例配置,然后重启它们。

注意:下次如果你用tiup是reload或upgrade集群,tiup这边的meta配置文件(/home/tidb/.tiup/storage/cluster/clusters/{your_tidb_cluster_name}/meta.yaml)可能会覆盖你之前的修改,到时候你结合实际在完成操作后,看要不要再到实例里去修改和重启,以便再次应用。

在所有TiDB Server实例上内存限制10G(保证所有业务都能正常运行),监控业务1的TiDB Server 上大量使用内存的SQL进行优化或者分配单独的TiDB Server节点(保障业务1的效率)。

大内存的SQL监控:
select id,time,info,mem from INFORMATION_SCHEMA.processlist a where a.info is not null

select id from INFORMATION_SCHEMA.processlist a where a.info is not null and (mem >=2147483648 )
超过kill

报表查询在单独的tidb实例,确实会消耗大量的内存,并发不会很高,只有6个以下,底层走tiflash全表扫描消耗大量内存,属于正常,目前要给报表查询单独tidb实例配置单个sql的大内存,而set global tidb_mem_quota_query=参数会影响所有tidb实例