在 TiDB 中,RU(Request Unit) 是 资源计量单位,用于衡量数据库操作(如读、写、SQL 计算等)所消耗的系统资源(包括 CPU、内存、磁盘 I/O 等)。简单来说,RU 是 TiDB 对用户请求所占用资源的量化指标。
RU 的核心作用
-
资源管控
通过 RU 的计量,TiDB 可以对不同用户或业务进行资源分配和限制,避免某些高负载操作影响整体集群稳定性。例如,限制某类查询的 RU 用量,防止其耗尽集群资源。 -
按需分配
RU 允许用户根据业务优先级分配资源。例如,核心业务可以分配更多 RU,确保其性能;非关键业务则限制 RU,避免资源争抢。 -
限制过载
如果某类请求的 RU 消耗超过预设阈值,TiDB 会对其进行排队或拒绝,保护集群不被突增流量拖垮。
RU 的常见场景
- 资源组(Resource Group)
在 TiDB 的 Resource Control 功能中,可以为不同资源组设置 RU 配额。例如:
CREATE RESOURCE GROUP batch_jobs RU_PER_SEC = 1000; -- 限制该组每秒最多消耗 1000 RU
这样,绑定到该组的 SQL 请求会受 RU 配额限制。
- 监控与优化
通过 TiDB 监控面板(如 Grafana)或系统表INFORMATION_SCHEMA.RESOURCE_GROUPS
,可以观察各资源组的 RU 消耗情况,帮助定位性能瓶颈或优化资源分配。
如何计算 RU?
TiDB 根据 SQL 操作的实际资源消耗动态计算 RU 值,例如:
- 1 次简单的 KV 点读 ≈ 1 RU
- 1 次复杂的聚合计算可能消耗数百 RU
具体计算规则由 TiDB 内部机制动态调整,用户无需手动计算。
总结
RU 是 TiDB 实现精细化资源管理的核心单位,通过它可以在多租户、混合负载等场景下,公平合理地分配集群资源,平衡性能与稳定性。如果你需要进一步调整 RU 配置或监控资源使用,可以查阅 TiDB 官方文档的 Resource Control 部分。