问题背景/描述:有一个分析类的 SQL 占用内存资源较多,所以我们想用资源管控的方式进行内存级别的限制(至少可以避免 oom),但是发现无法限制住,从监控上看 SQL 使用了 1w 个 RU,RU max (8w), explain analyze 上看使用了 50w 个 RU
操作步骤:
- explain analyze 看到执行计划的 RU 为 50w 左右
- 设置 ap_l 组 RU 25w,并绑定用户
- 重新登录用户执行,explain analyze 发现 RU 并没有下降至 25w
- 又调整了 ap_l 到 2w5,发现没有限制住,RU max 最好还是打到了 8w
补充信息:t1 表是个分区表
SQL如下:
SELECT
xxx,xxx
FROM
t1
WHERE
xx = 123
AND xx >= “2024-07-22”
AND xx <= “2024-09-22”
GROUP BY
id
ORDER BY
xxx DESC
LIMIT
20000
我比较疑惑的点:
- 如果我要对单条 SQL 进行评估,并且有干净的环境,那么我用哪个指标衡量 RU
- 为啥我更改了资源组的 RU 配合 RU max 并没有限制住呢?