diff --git a/dynamic-config.md b/dynamic-config.md index 959aab4bc631..78f7c568f4b9 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -162,6 +162,7 @@ show warnings; | readpool.unified.max-thread-count | 统一处理读请求的线程池最多的线程数量,即 UnifyReadPool 线程池大小 | | readpool.unified.max-tasks-per-worker | 统一处理读请求的线程池中单个线程允许积压的最大任务数量,超出后会返回 Server Is Busy。 | | readpool.unified.auto-adjust-pool-size | 是否开启自适应调整 UnifyReadPool 的大小 | +| resource-control.priority-ctl-strategy | 配置低优先级任务的流量管控策略。 | | coprocessor.split-region-on-table | 开启按 table 分裂 Region 的开关 | | coprocessor.batch-split-limit | 批量分裂 Region 的阈值 | | coprocessor.region-max-size | Region 容量空间的最大值 | diff --git a/sql-statements/sql-statement-alter-resource-group.md b/sql-statements/sql-statement-alter-resource-group.md index 2da24b024e11..92dc573bd3cd 100644 --- a/sql-statements/sql-statement-alter-resource-group.md +++ b/sql-statements/sql-statement-alter-resource-group.md @@ -26,7 +26,7 @@ ResourceGroupOptionList ::= | ResourceGroupOptionList ',' DirectResourceGroupOption DirectResourceGroupOption ::= - "RU_PER_SEC" EqOpt stringLit + "RU_PER_SEC" EqOpt LengthNum | "PRIORITY" EqOpt ResourceGroupPriorityOption | "BURSTABLE" | "BURSTABLE" EqOpt Boolean @@ -68,6 +68,7 @@ BackgroundOptionList ::= DirectBackgroundOption ::= "TASK_TYPES" EqOpt stringLit +| "UTILIZATION_LIMIT" EqOpt LengthNum ``` TiDB 支持以下 `DirectResourceGroupOption`, 其中 [Request Unit (RU)](/tidb-resource-control.md#什么是-request-unit-ru) 是 TiDB 对 CPU、IO 等系统资源统一抽象的单位。 @@ -78,7 +79,7 @@ TiDB 支持以下 `DirectResourceGroupOption`, 其中 [Request Unit (RU)](/tidb- | `PRIORITY` | 任务在 TiKV 上处理的绝对优先级 | `PRIORITY = HIGH` 表示优先级高。若未指定则默认为 `MEDIUM`。 | | `BURSTABLE` | 允许对应的资源组超出配额后使用空余的系统资源。 | | `QUERY_LIMIT` | 当查询执行满足该条件时,识别该查询为 Runaway Query 并执行相应的操作 | `QUERY_LIMIT=(EXEC_ELAPSED='60s', ACTION=KILL, WATCH=EXACT DURATION='10m')` 表示当执行时间超过 60 秒后识别为 Runaway Query,对该查询执行终止操作,并在 10 分钟内对同样的 SQL 直接执行终止操作。`QUERY_LIMIT=()` 或 `QUERY_LIMIT=NULL` 则表示不进行 Runaway 控制。具体参数介绍参见[管理资源消耗超出预期的查询 (Runaway Queries)](/tidb-resource-control.md#管理资源消耗超出预期的查询-runaway-queries)。 | -| `BACKGROUND` | 后台任务相关的设置。具体参数介绍参见[管理后台任务](/tidb-resource-control.md#管理后台任务) | `BACKGROUND=(TASK_TYPES="br,stats")` 表示将备份恢复和收集统计信息相关的任务作为后台任务调度。 | +| `BACKGROUND` | 后台任务相关的设置。具体参数介绍参见[管理后台任务](/tidb-resource-control.md#管理后台任务) | `BACKGROUND=(TASK_TYPES="br,stats", UTILIZATION_LIMIT=30)` 表示将备份恢复和收集统计信息相关的任务作为后台任务调度,并且后台任务最多可以使用 TiKV 30% 的资源。 | > **注意:** > @@ -148,7 +149,7 @@ SELECT * FROM information_schema.resource_groups WHERE NAME ='rg1'; 修改 `default` 资源组的后台任务 `BACKGROUND` 相关设置。 ```sql -ALTER RESOURCE GROUP default BACKGROUND = (TASK_TYPES = "br,ddl"); +ALTER RESOURCE GROUP default BACKGROUND = (TASK_TYPES = "br,ddl", UTILIZATION_LIMIT=30); ``` ```sql @@ -160,11 +161,11 @@ SELECT * FROM information_schema.resource_groups WHERE NAME ='default'; ``` ```sql -+---------+------------+----------+-----------+-------------+---------------------+ -| NAME | RU_PER_SEC | PRIORITY | BURSTABLE | QUERY_LIMIT | BACKGROUND | -+---------+------------+----------+-----------+-------------+---------------------+ -| default | UNLIMITED | MEDIUM | YES | NULL | TASK_TYPES='br,ddl' | -+---------+------------+----------+-----------+-------------+---------------------+ ++---------+------------+----------+-----------+-------------+-------------------------------------------+ +| NAME | RU_PER_SEC | PRIORITY | BURSTABLE | QUERY_LIMIT | BACKGROUND | ++---------+------------+----------+-----------+-------------+-------------------------------------------+ +| default | UNLIMITED | MEDIUM | YES | NULL | TASK_TYPES='br,ddl', UTILIZATION_LIMIT=30 | ++---------+------------+----------+-----------+-------------+-------------------------------------------+ 1 rows in set (1.30 sec) ``` diff --git a/tidb-resource-control.md b/tidb-resource-control.md index 2647b9c15946..f6b701363c8d 100644 --- a/tidb-resource-control.md +++ b/tidb-resource-control.md @@ -360,7 +360,8 @@ Runaway Query 是指执行时间或消耗资源超出预期的查询(仅指 `S #### `BACKGROUND` 参数说明 -`TASK_TYPES`:设置需要作为后台任务管理的任务类型,多个任务类型以 `,` 分隔。 +- `TASK_TYPES`:设置需要作为后台任务管理的任务类型,多个任务类型以 `,` 分隔。 +- `UTILIZATION_LIMIT`:限制每个 TiKV 节点上后台任务最大可以使用的资源百分比 (0-100)。默认情况下,TiKV 会根据节点的总资源以及当前前台任务所占用的资源,来计算后台任务的可用资源。如果设置此限制,则实际分配给后台任务的资源不会超过此限制的比例。 目前 TiDB 支持如下几种后台任务的类型: @@ -378,10 +379,10 @@ Runaway Query 是指执行时间或消耗资源超出预期的查询(仅指 `S #### 示例 -1. 修改 `default` 资源组,将 `br` 和 `ddl` 标记为后台任务。 +1. 修改 `default` 资源组,将 `br` 和 `ddl` 标记为后台任务,并配置后台任务最多可使用 TiKV 节点总资源的 30%。 ```sql - ALTER RESOURCE GROUP `default` BACKGROUND=(TASK_TYPES='br,ddl'); + ALTER RESOURCE GROUP `default` BACKGROUND=(TASK_TYPES='br,ddl', UTILIZATION_LIMIT=30); ``` 2. 修改 `default` 资源组,将后台任务的类型还原为默认值。 @@ -405,11 +406,11 @@ Runaway Query 是指执行时间或消耗资源超出预期的查询(仅指 `S 输出结果如下: ``` - +---------+------------+----------+-----------+-------------+---------------------+ - | NAME | RU_PER_SEC | PRIORITY | BURSTABLE | QUERY_LIMIT | BACKGROUND | - +---------+------------+----------+-----------+-------------+---------------------+ - | default | UNLIMITED | MEDIUM | YES | NULL | TASK_TYPES='br,ddl' | - +---------+------------+----------+-----------+-------------+---------------------+ + +---------+------------+----------+-----------+-------------+-------------------------------------------+ + | NAME | RU_PER_SEC | PRIORITY | BURSTABLE | QUERY_LIMIT | BACKGROUND | + +---------+------------+----------+-----------+-------------+-------------------------------------------+ + | default | UNLIMITED | MEDIUM | YES | NULL | TASK_TYPES='br,ddl', UTILIZATION_LIMIT=30 | + +---------+------------+----------+-----------+-------------+-------------------------------------------+ ``` 5. 如果希望将当前会话里的任务显式标记为后台类型,你可以使用 `tidb_request_source_type` 显式指定任务类型,如: diff --git a/tikv-configuration-file.md b/tikv-configuration-file.md index 507df8b37467..6bf5cecb8de8 100644 --- a/tikv-configuration-file.md +++ b/tikv-configuration-file.md @@ -2430,6 +2430,15 @@ Raft Engine 相关的配置项。 + 在 TiDB 侧开启 [`tidb_enable_resource_control`](/system-variables.md#tidb_enable_resource_control-从-v660-版本开始引入) 全局变量的情况下,开启这个配置项才有意义。此配置参数开启后,TiKV 会使用优先级队列对排队的用户前台读写请求做调度,调度的优先级和请求所在资源组已经消费的资源量反相关,和对应资源组的配额正相关。 + 默认值:true(即开启按照资源组配额调度) +### `priority-ctl-strategy` 从 v8.4.0 版本开始引入 + ++ 配置低优先级任务的流量管控策略。TiKV 通过对低优先级的任务进行流量控制来确保优先执行高优先级任务。 ++ 可选值: + + `aggressive`:此策略会优先保证高优先级任务的性能,确保高优先级任务的吞吐和延迟基本不受影响,但低优先级任务的执行会较慢。 + + `moderate`:此策略会为低优先级任务施加较平衡的流控限制,并对高优先级任务有较低影响。 + + `conservative`:此策略会优先确保系统资源被充分利用,允许低优先级任务根据需要充分使用系统可用资源,因此对高优先级任务的性能影响更大。 ++ 默认值:`moderate` + ## split [Load Base Split](/configure-load-base-split.md) 相关的配置项。