【TiDB 使用环境】测试
请教各位大佬,SQL查询等待RU耗时较高,但是在RU资源监控处看到RU并没有达到上限,什么原因?如何处理优化。
这个rg组的优先级调高试试
有配置限制吗
是不是有一些全表扫描、无索引、大查询,单 SQL 消耗大量 RU的情况
看下后台日志
为什么 RU 没到上限,SQL 仍然等待 RU
核心原因:
RU 监控展示的是总体使用率,而 SQL 等待的是瞬时令牌分配。
RU 使用的是 Token Bucket(令牌桶)调度机制。
逻辑:
RU_PER_SEC = 每秒生成令牌
BURST = 可瞬时使用额度
SQL执行前必须拿到令牌
拿不到就等待
因此会出现:
监控 RU 未打满
SQL 却在等待 RU
本质:
瞬时 RU 不够,而不是总量不
1 个赞
优化方案
按效果排序。
方案一:提高 RU_PER_SEC(最直接)
测试环境建议直接放大。
例如:
ALTER RESOURCE GROUP default
RU_PER_SEC = 10000;
或
20000
效果立刻改善。
方案二:提高 BURST_LIMIT
让大 SQL 不排队。
ALTER RESOURCE GROUP default
BURST_LIMIT = 20000;
适合:
测试
OLAP
批处理。
方案三:拆分资源组
例如:
OLTP
OLAP
TEST
不同资源组。
避免互相抢 RU
1 个赞
也可能不是资源不够,而是资源组里的请求在排队等待调度 ,或者底层 TiKV 慢导致等待时间被统计到 RU 等待里
或者监控中的指标值被平均了,看不到瞬时满的情况

