-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update explain and execution summary related docs #19229
base: master
Are you sure you want to change the base?
Conversation
Signed-off-by: yibin <[email protected]>
Signed-off-by: yibin <[email protected]>
Signed-off-by: yibin <[email protected]>
Signed-off-by: yibin <[email protected]>
Signed-off-by: yibin <[email protected]>
Signed-off-by: yibin <[email protected]>
Signed-off-by: yibin <[email protected]>
Co-authored-by: xufei <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
@windtalker: adding LGTM is restricted to approvers and reviewers in OWNERS files. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
Co-authored-by: xixirangrang <[email protected]>
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here.
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Rest LGTM
- root task 是指在 TiDB 中执行的计算任务; | ||
- cop task 是指使用 TiKV 或 TiFlash 中的 Coprocessor 执行的计算任务; | ||
- batchCop task 是对 TiFlash cop task 的一种优化,可以在一个任务中执行对多个 Region 的查询; | ||
- mpp task 是指利用 TiFlash 的 [MPP 模式](/explain-mpp.md)执行查询。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- root task 是指在 TiDB 中执行的计算任务; | |
- cop task 是指使用 TiKV 或 TiFlash 中的 Coprocessor 执行的计算任务; | |
- batchCop task 是对 TiFlash cop task 的一种优化,可以在一个任务中执行对多个 Region 的查询; | |
- mpp task 是指利用 TiFlash 的 [MPP 模式](/explain-mpp.md)执行查询。 | |
- root task 是指在 TiDB 中执行的计算任务。 | |
- cop task 是指使用 TiKV 或 TiFlash 中的 Coprocessor 执行的计算任务。 | |
- batchCop task 是对 TiFlash cop task 的一种优化,可以在一个任务中执行对多个 Region 的查询。 | |
- MPP task 是指利用 TiFlash 的 [MPP 模式](/explain-mpp.md)执行查询。 |
- batchCop task 是对 TiFlash cop task 的一种优化,可以在一个任务中执行对多个 Region 的查询; | ||
- mpp task 是指利用 TiFlash 的 [MPP 模式](/explain-mpp.md)执行查询。 | ||
|
||
SQL 优化的目标之一是将计算尽可能地下推到 TiKV 或 TiFlash 中执行。TiKV 中的 Coprocessor 能支持大部分 SQL 内建函数(包括聚合函数和标量函数)、SQL `LIMIT` 操作、索引扫描和表扫描。TiFlash 中的 Coprocessor 与 TiKV 功能类似,但是不支持索引扫描。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SQL 优化的目标之一是将计算尽可能地下推到 TiKV 或 TiFlash 中执行。TiKV 中的 Coprocessor 能支持大部分 SQL 内建函数(包括聚合函数和标量函数)、SQL `LIMIT` 操作、索引扫描和表扫描。TiFlash 中的 Coprocessor 与 TiKV 功能类似,但是不支持索引扫描。 | |
SQL 优化的目标之一是将计算尽可能地下推到 TiKV 或 TiFlash 中执行,以提高查询效率。TiKV 中的 Coprocessor 支持大部分 SQL 内建函数(包括聚合函数和标量函数)、`LIMIT` 操作、索引扫描和表扫描。TiFlash 中的 Coprocessor 与 TiKV 功能类似,但不支持索引扫描。 |
| memory | 算子占用内存空间的大小。 | | ||
| disk | 算子占用磁盘空间的大小。 | | ||
| `actRows` | 算子实际输出的数据条数。 | | ||
| `execution info` | 算子的实际执行信息。`time` 表示从进入算子到离开算子的全部 `wall time`,包括所有子算子操作的全部执行时间。如果该算子被父算子多次调用 (`loops`),这个时间就是累积的时间。`loops` 是当前算子被父算子调用的次数。`open` 表示算子初始化所需的时间。`close` 表示从算子处理完所有数据到算子结束的时间。其中 `time` 统计的时间是包含 `open` 和 `close` 的时间。当算子存在多并发执行情况时,执行信息中显示的会是各个并发使用的 `wall time` 加总求和的结果,此时 `time`、`open` 和 `close` 会被替换为 `total_time`, `total_open` 和 `total_close`。| |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| `execution info` | 算子的实际执行信息。`time` 表示从进入算子到离开算子的全部 `wall time`,包括所有子算子操作的全部执行时间。如果该算子被父算子多次调用 (`loops`),这个时间就是累积的时间。`loops` 是当前算子被父算子调用的次数。`open` 表示算子初始化所需的时间。`close` 表示从算子处理完所有数据到算子结束的时间。其中 `time` 统计的时间是包含 `open` 和 `close` 的时间。当算子存在多并发执行情况时,执行信息中显示的会是各个并发使用的 `wall time` 加总求和的结果,此时 `time`、`open` 和 `close` 会被替换为 `total_time`, `total_open` 和 `total_close`。| | |
| `execution info` | 算子的实际执行信息。`time` 表示从进入算子到离开算子的全部 `wall time`,包括所有子算子操作的全部执行时间。如果该算子被父算子多次调用 (`loops`),这个时间就是累积的时间。`loops` 是当前算子被父算子调用的次数。`open` 表示算子初始化所需的时间。`close` 表示从算子处理完所有数据到算子结束执行的时间。其中 `time` 统计的时间包含 `open` 和 `close` 的时间。当算子存在多并发执行情况时,`execution info` 中显示的是各个并发使用的 `wall time` 求和后的结果,此时 `time`、`open` 和 `close` 会被替换为 `total_time`, `total_open` 和 `total_close`。| |
@@ -99,7 +99,7 @@ EXPLAIN ANALYZE SELECT * FROM t1; | |||
|
|||
## 算子执行信息介绍 | |||
|
|||
`execution info` 信息除了基本的 `time` 和 `loop` 信息外,还包含算子特有的执行信息,主要包含了该算子发送 RPC 请求的耗时信息以及其他步骤的耗时。 | |||
`execution info` 信息除了基本的 `time`, `open`, `close` 和 `loop` 信息外,还包含算子特有的执行信息,主要包含了该算子发送 RPC 请求的耗时信息以及其他步骤的耗时。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
`execution info` 信息除了基本的 `time`, `open`, `close` 和 `loop` 信息外,还包含算子特有的执行信息,主要包含了该算子发送 RPC 请求的耗时信息以及其他步骤的耗时。 | |
`execution info` 信息除了基本的 `time`、`open`、`close` 和 `loop` 信息外,还包含算子特有的执行信息,主要包含了该算子发送 RPC 请求的耗时信息以及其他步骤的耗时。 |
@@ -339,6 +339,18 @@ after key/value request is processed: | |||
|
|||
对于 writes 和 batch gets,计算方法相似,只是基础成本不同。 | |||
|
|||
### tiflash_wait 信息 | |||
|
|||
当查询涉及到 mpp task 时候时,执行时间还受到各类 `tiflash_wait` 时间的影响,示例如下: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
当查询涉及到 mpp task 时候时,执行时间还受到各类 `tiflash_wait` 时间的影响,示例如下: | |
当查询涉及到 MPP task 时,执行时间将受到各类 `tiflash_wait` 时间的影响,示例如下: |
@@ -52,7 +52,7 @@ ExplainableStmt ::= | |||
|:----------------|:----------------------------------------------------------------------------------------------------------| | |||
| id | 算子的 ID,是算子在整个执行计划中唯一的标识。在 TiDB 2.1 中,ID 会格式化地显示算子的树状结构。数据从孩子结点流向父亲结点,每个算子的父亲结点有且仅有一个。| | |||
| estRows | 算子预计将会输出的数据条数,基于统计信息以及算子的执行逻辑估算而来。在 4.0 之前叫 count。 | | |||
| task | 算子属于的 task 种类。目前的执行计划分成为两种 task,一种叫 **root** task,在 tidb-server 上执行,一种叫 **cop** task,在 TiKV 或者 TiFlash 上并行执行。当前的执行计划在 task 级别的拓扑关系是一个 root task 后面可以跟许多 cop task,root task 使用 cop task 的输出结果作为输入。cop task 中执行的也即是 TiDB 下推到 TiKV 或者 TiFlash 上的任务,每个 cop task 分散在 TiKV 或者 TiFlash 集群中,由多个进程共同执行。 | | |||
| task | 算子属于的 task 种类。目前的执行计划可以分为以下四种 task:**root** task,在 tidb-server 上执行;**cop** task,在 TiKV 或者 TiFlash 上并行执行;**batchCop** task,在 TiFlash 上并行执行;**mpp** task,在 TiFlash 上并行执行。当前的执行计划在 task 级别的拓扑关系是一个 root task 后面可以跟许多其他种类的 task,root task 使用其他种类 task 的输出结果作为输入。其他种类 task 中执行的也即是 TiDB 下推到 TiKV 或者 TiFlash 上的任务,每个 task 分散在 TiKV 或者 TiFlash 集群中,由多个进程共同执行。 | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| task | 算子属于的 task 种类。目前的执行计划可以分为以下四种 task:**root** task,在 tidb-server 上执行;**cop** task,在 TiKV 或者 TiFlash 上并行执行;**batchCop** task,在 TiFlash 上并行执行;**mpp** task,在 TiFlash 上并行执行。当前的执行计划在 task 级别的拓扑关系是一个 root task 后面可以跟许多其他种类的 task,root task 使用其他种类 task 的输出结果作为输入。其他种类 task 中执行的也即是 TiDB 下推到 TiKV 或者 TiFlash 上的任务,每个 task 分散在 TiKV 或者 TiFlash 集群中,由多个进程共同执行。 | | |
| task | 算子属于的 task 类型。目前的执行计划可以分为以下四种 task:**root** task,在 tidb-server 上执行;**cop** task,在 TiKV 或者 TiFlash 上并行执行;**batchCop** task,在 TiFlash 上并行执行;**mpp** task,在 TiFlash 上并行执行。当前的执行计划在 task 级别的拓扑关系是一个 root task 后面可以跟许多其他类型的 task,root task 使用其他类型 task 的输出结果作为输入。其他类型 task 中执行的也即是 TiDB 下推到 TiKV 或者 TiFlash 上的任务,每个 task 分散在 TiKV 或者 TiFlash 集群中,由多个进程共同执行。 | |
[LGTM Timeline notifier]Timeline:
|
@@ -174,9 +174,14 @@ Build 总是先于 Probe 执行,并且 Build 总是出现在 Probe 前面。 | |||
|
|||
### Task 简介 | |||
|
|||
目前 TiDB 的计算任务分为两种不同的 task:cop task 和 root task。Cop task 是指使用 TiKV 中的 Coprocessor 执行的计算任务,root task 是指在 TiDB 中执行的计算任务。 | |||
目前 TiDB 的计算任务分为四种不同的 task:root task, cop task, batchCop task 和 mpp task。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
目前 TiDB 的计算任务分为四种不同的 task:root task, cop task, batchCop task 和 mpp task。 | |
目前 TiDB 的计算任务分为四种不同的 task:root task, cop task, batchCop task 和 MPP task。 |
First-time contributors' checklist
What is changed, added or deleted? (Required)
Which TiDB version(s) do your changes apply to? (Required)
Tips for choosing the affected version(s):
By default, CHOOSE MASTER ONLY so your changes will be applied to the next TiDB major or minor releases. If your PR involves a product feature behavior change or a compatibility change, CHOOSE THE AFFECTED RELEASE BRANCH(ES) AND MASTER.
For details, see tips for choosing the affected versions (in Chinese).
What is the related PR or file link(s)?
Do your changes match any of the following descriptions?