Skip to content

Commit

Permalink
resource_control: enhance observability (#15935)
Browse files Browse the repository at this point in the history
  • Loading branch information
glorv authored Jan 19, 2024
1 parent f830a23 commit f22293a
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 4 deletions.
7 changes: 7 additions & 0 deletions identify-slow-queries.md
Original file line number Diff line number Diff line change
Expand Up @@ -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。
Expand Down
14 changes: 12 additions & 2 deletions information-schema/information-schema-slow-query.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 | |
Expand Down Expand Up @@ -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
Expand All @@ -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 | |
Expand Down Expand Up @@ -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 也会将相关计算下推给其他节点执行,而不是把所有节点的数据都取回来,可以查看执行计划,如下:
Expand Down
4 changes: 4 additions & 0 deletions mysql-schema.md
Original file line number Diff line number Diff line change
Expand Up @@ -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` 全局系统变量表
Expand Down
15 changes: 13 additions & 2 deletions statement-summary-tables.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 也相同。

Expand Down Expand Up @@ -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`

Expand Down Expand Up @@ -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`: 记录的开始时间;
Expand Down
1 change: 1 addition & 0 deletions system-variables.md
Original file line number Diff line number Diff line change
Expand Up @@ -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` <span class="version-mark">从 v4.0.9 版本开始引入</span>

Expand Down

0 comments on commit f22293a

Please sign in to comment.