【TiDB 使用环境】生产环境
【TiDB 版本】8.5.1
【部署方式】
【遇到的问题:问题现象及影响】
想咨询下,我新建了一个用户和资源组,我已经将这个用户绑定到对应资源了,但是慢sql这里显示的资源组,一直都是有多个。并且语句并没有做会话级和语句级的资源组绑定,都是直接跟用户绑定的,可是为啥执行sql语句还是会被放到default资源组呢?这样岂不是还是有些限制不住了吗
【其他附件:截图/日志/监控】
- 使用
CREATE USER或者ALTER USER将用户绑定到资源组后,只会对该用户新建的会话生效,不会对该用户已有的会话生效。
你这个 sql 是绑定前执行的还是绑定后执行的?
看上去你是用了 将语句绑定到资源组 的功能
通过在 SQL 语句中添加 RESOURCE_GROUP(resource_group_name) Hint,可以将该语句绑定到指定的资源组。此 Hint 支持 SELECT、INSERT、UPDATE、DELETE 四种语句。
当系统变量 tidb_resource_control_strict_mode 设置为 ON 时,你需要有 SUPER 或者 RESOURCE_GROUP_ADMIN 或者 RESOURCE_GROUP_USER 权限才能使用此 Hint。
示例:
SELECT /*+ RESOURCE_GROUP(rg1) */ * FROM t limit 10;
但是你没有选择资源组?
如果你的用户已经绑定了资源组,就不需要单独再语句上绑定资源组(且你没有选择资源组),这个时候估计会默认你这个语句直接使用了 default 资源组 (对于没有绑定资源组的语句会自动绑定至此资源组。)
可以用 runaway query 来限制具体的 sql 执行资源消耗,尤其是大的 SQL 那种
系统SQL运行的问题吗
确定是绑定后执行的
确定没有将语句绑定到资源组,目前我们的资源组都是跟用户绑定的,执行语句不会绑定到资源组的;
这些sql也不是系统SQL
https://docs.pingcap.com/zh/tidb/stable/sql-statement-set-resource-group/
有会话级别设置过么?可以按照这个文档看看登录这个账户后,绑定的资源组是哪个。
会话生效范围限制 :通过CREATE USER /ALTER USER 绑定用户与资源组后,仅对 “绑定操作后新建的会话” 生效 ,绑定前已存在的会话仍会沿用默认资源组(default)
是用了长连接吧,断开重新连接有效果吗?
SHOW CREATE USER ‘你的用户名’@‘%’;
– 查看资源组列表
SELECT * FROM information_schema.resource_groups;



