diff --git a/identify-slow-queries.md b/identify-slow-queries.md index b7f51d9a9397..c352b2f73bcc 100644 --- a/identify-slow-queries.md +++ b/identify-slow-queries.md @@ -160,6 +160,13 @@ Slow Query 基础信息: * `tikvDiskFull`:因为 TiKV 的磁盘满了而产生的 backoff。 * `txnLockFast`:因为读数据时遇到了锁而产生的 backoff。 +和资源管控相关的字段: + +* `Resource_group`:语句执行所绑定的资源组。 +* `Request_unit_read`:执行语句消耗的总读 RU。 +* `Request_unit_write`:执行语句消耗的总写 RU。 +* `Time_queued_by_rc`:执行语句过程中等待可用资源的总耗时。 + ## 相关系统变量 * [tidb_slow_log_threshold](/system-variables.md#tidb_slow_log_threshold):设置慢日志的阈值,执行时间超过阈值的 SQL 语句将被记录到慢日志中。默认值是 300 ms。 diff --git a/information-schema/information-schema-slow-query.md b/information-schema/information-schema-slow-query.md index 67b9fc500df8..e40abb1f3839 100644 --- a/information-schema/information-schema-slow-query.md +++ b/information-schema/information-schema-slow-query.md @@ -23,6 +23,7 @@ DESC slow_query; | User | varchar(64) | YES | | NULL | | | Host | varchar(64) | YES | | NULL | | | Conn_ID | bigint(20) unsigned | YES | | NULL | | +| Session_alias | varchar(64) | YES | | NULL | | | Exec_retry_count | bigint(20) unsigned | YES | | NULL | | | Exec_retry_time | double | YES | | NULL | | | Query_time | double | YES | | NULL | | @@ -87,13 +88,17 @@ DESC slow_query; | Plan_from_cache | tinyint(1) | YES | | NULL | | | Plan_from_binding | tinyint(1) | YES | | NULL | | | Has_more_results | tinyint(1) | YES | | NULL | | +| Resource_group | varchar(64) | YES | | NULL | | +| Request_unit_read | double | YES | | NULL | | +| Request_unit_write | double | YES | | NULL | | +| Time_queued_by_rc | double | YES | | NULL | | | Plan | longtext | YES | | NULL | | | Plan_digest | varchar(128) | YES | | NULL | | | Binary_plan | longtext | YES | | NULL | | | Prev_stmt | longtext | YES | | NULL | | | Query | longtext | YES | | NULL | | +-------------------------------+---------------------+------+------+---------+-------+ -74 rows in set (0.001 sec) +79 rows in set (0.00 sec) ``` ## CLUSTER_SLOW_QUERY table @@ -116,6 +121,7 @@ DESC CLUSTER_SLOW_QUERY; | User | varchar(64) | YES | | NULL | | | Host | varchar(64) | YES | | NULL | | | Conn_ID | bigint(20) unsigned | YES | | NULL | | +| Session_alias | varchar(64) | YES | | NULL | | | Exec_retry_count | bigint(20) unsigned | YES | | NULL | | | Exec_retry_time | double | YES | | NULL | | | Query_time | double | YES | | NULL | | @@ -180,13 +186,17 @@ DESC CLUSTER_SLOW_QUERY; | Plan_from_cache | tinyint(1) | YES | | NULL | | | Plan_from_binding | tinyint(1) | YES | | NULL | | | Has_more_results | tinyint(1) | YES | | NULL | | +| Resource_group | varchar(64) | YES | | NULL | | +| Request_unit_read | double | YES | | NULL | | +| Request_unit_write | double | YES | | NULL | | +| Time_queued_by_rc | double | YES | | NULL | | | Plan | longtext | YES | | NULL | | | Plan_digest | varchar(128) | YES | | NULL | | | Binary_plan | longtext | YES | | NULL | | | Prev_stmt | longtext | YES | | NULL | | | Query | longtext | YES | | NULL | | +-------------------------------+---------------------+------+------+---------+-------+ -75 rows in set (0.001 sec) +80 rows in set (0.00 sec) ``` 查询集群系统表时,TiDB 也会将相关计算下推给其他节点执行,而不是把所有节点的数据都取回来,可以查看执行计划,如下: diff --git a/mysql-schema.md b/mysql-schema.md index ee8b42706f30..0ccf9fc05c3c 100644 --- a/mysql-schema.md +++ b/mysql-schema.md @@ -94,6 +94,10 @@ aliases: ['/docs-cn/dev/system-tables/system-table-overview/','/docs-cn/dev/refe * `tidb_background_subtask` 存放当前正在执行的分布式执行框架任务的子任务元信息 * `tidb_background_subtask_history` 存放历史的分布式执行框架任务的子任务元信息 +## 资源管控相关系统表 + +* `request_unit_by_group` 存放资源组 RU 消耗统计的历史记录 + ## 其它系统表 * `GLOBAL_VARIABLES` 全局系统变量表 diff --git a/statement-summary-tables.md b/statement-summary-tables.md index 9f0e79757003..1163763c7bb5 100644 --- a/statement-summary-tables.md +++ b/statement-summary-tables.md @@ -18,7 +18,7 @@ aliases: ['/docs-cn/dev/statement-summary-tables/','/docs-cn/dev/reference/perfo ## `statements_summary` -`statements_summary` 是 `information_schema` 里的一张系统表,它把 SQL 按 SQL digest 和 plan digest 分组,统计每一组的 SQL 信息。 +`statements_summary` 是 `information_schema` 里的一张系统表,它把 SQL 按 所属资源组、SQL digest 和 plan digest 分组,统计每一组的 SQL 信息。 此处的 SQL digest 与 slow log 里的 SQL digest 一样,是把 SQL 规一化后算出的唯一标识符。SQL 的规一化会忽略常量、空白符、大小写的差别。即语法一致的 SQL 语句,其 digest 也相同。 @@ -78,7 +78,8 @@ select * from employee where id in (...) and salary between ? and ?; > **注意:** > -> 在 TiDB 中,statement summary tables 中字段的时间单位是纳秒 (ns),而 MySQL 中的时间单位是皮秒 (ps)。 +> - 在 TiDB 中,statement summary tables 中字段的时间单位是纳秒 (ns),而 MySQL 中的时间单位是皮秒 (ps)。 +> - 从 v7.6.0 版本开始,对于开启[资源管控](/tidb-resource-control.md) 的集群,`statements_summary` 会分资源组进行聚合,即在不同资源组执行的相同语句会被收集为不同的记录。 ## `statements_summary_history` @@ -348,6 +349,16 @@ SQL 的基础信息: - `AVG_AFFECTED_ROWS`:平均影响行数 - `PREV_SAMPLE_TEXT`:当 SQL 是 `COMMIT` 时,该字段为 `COMMIT` 的前一条语句;否则该字段为空字符串。当 SQL 是 `COMMIT` 时,按 digest 和 `prev_sample_text` 一起分组,即不同 `prev_sample_text` 的 `COMMIT` 也会分到不同的行 +和资源管控相关的字段: + +- `AVG_REQUEST_UNIT_WRITE`:执行 SQL 语句平均消耗的写 RU +- `MAX_REQUEST_UNIT_WRITE`:执行 SQL 语句最大消耗的写 RU +- `AVG_REQUEST_UNIT_READ`:执行 SQL 语句平均消耗的读 RU +- `MAX_REQUEST_UNIT_READ`:执行 SQL 语句最大消耗的读 RU +- `AVG_QUEUED_RC_TIME`:执行 SQL 语句等待可用 RU 的平均耗时 +- `MAX_QUEUED_RC_TIME`:执行 SQL 语句等待可用 RU 的最大耗时 +- `RESOURCE_GROUP`:执行 SQL 语句绑定的资源组 + ### `statements_summary_evicted` 字段介绍 - `BEGIN_TIME`: 记录的开始时间; diff --git a/system-variables.md b/system-variables.md index 7d06992fb480..dadd3921faba 100644 --- a/system-variables.md +++ b/system-variables.md @@ -2855,6 +2855,7 @@ v5.0 后,用户仍可以单独修改以上系统变量(会有废弃警告) - `start_ts`:事务开始的时间戳。 - `for_update_ts`:先前执行的 DML 语句的 `for_update_ts` 信息。这是 TiDB 用于测试的内部术语。通常,你可以忽略此信息。 - `error`:错误消息(如果有)。 + - `ru_consumption`:执行语句的 [RU](/tidb-resource-control.md#什么是-request-unit-ru) 消耗。 ### `tidb_last_txn_info` 从 v4.0.9 版本开始引入