 TiDB中文技术文档EXPLAIN 的 SQL 语句经过优化器后的最终物理执行计划。也就是 说, EXPLAIN 展示了 TiDB 执行该 SQL 语句的完整信息,比如以什么样的顺序,什么方式 JOIN 两个表, 表达式树长什么样等等。详细请看 EXPLAIN 输出格式; TiDB 目前还不支持 EXPLAIN [options] FOR CONNECTION connection_id ,我们将在未来支持它,详细请 Healthy 字段,一般小于等于 60 的表需要做 analyze。 ID 没什么规律,只要是唯一就行,不过生成的时候,是有一个计数器,生成一个 plan 就加一,执行的顺序和序号 无关,整个执行计划是一颗树,执行时从根节点开始,不断地向上返回数据。执行计划的理解,请参考理解 TiDB 执 行计划。 目前 TiDB 的计算任务隶属于两种不同的 task:cop task 和 root task。cop task 5 TiDB 是否支持基于 COST 的优化(CBO),如果支持,实现到什么程 度? 5.1.6 如何确定某张表是否需要做 analyze ? 5.1.7 SQL 的执行计划展开成了树,ID 的序号有什么规律吗?这棵树的执行顺 序会是怎么样的? 5.1.8 TiDB 执行计划中,task cop 在一个 root 下,这个是并行的么? 常见问题与解答(FAQ) - 386 - 本文档使用 书栈(BookStack0 码力 | 444 页 | 4.89 MB | 6 月前3 TiDB中文技术文档EXPLAIN 的 SQL 语句经过优化器后的最终物理执行计划。也就是 说, EXPLAIN 展示了 TiDB 执行该 SQL 语句的完整信息,比如以什么样的顺序,什么方式 JOIN 两个表, 表达式树长什么样等等。详细请看 EXPLAIN 输出格式; TiDB 目前还不支持 EXPLAIN [options] FOR CONNECTION connection_id ,我们将在未来支持它,详细请 Healthy 字段,一般小于等于 60 的表需要做 analyze。 ID 没什么规律,只要是唯一就行,不过生成的时候,是有一个计数器,生成一个 plan 就加一,执行的顺序和序号 无关,整个执行计划是一颗树,执行时从根节点开始,不断地向上返回数据。执行计划的理解,请参考理解 TiDB 执 行计划。 目前 TiDB 的计算任务隶属于两种不同的 task:cop task 和 root task。cop task 5 TiDB 是否支持基于 COST 的优化(CBO),如果支持,实现到什么程 度? 5.1.6 如何确定某张表是否需要做 analyze ? 5.1.7 SQL 的执行计划展开成了树,ID 的序号有什么规律吗?这棵树的执行顺 序会是怎么样的? 5.1.8 TiDB 执行计划中,task cop 在一个 root 下,这个是并行的么? 常见问题与解答(FAQ) - 386 - 本文档使用 书栈(BookStack0 码力 | 444 页 | 4.89 MB | 6 月前3
 TiDB v5.2 中文手册子句在 TiDB 查询计划树中对应 Limit 算子节点,ORDER BY 子句在查询计划树中对应 Sort 算子节 点,此外,我们会将相邻的 Limit 和 Sort 算子组合成 TopN 算子节点,表示按某个排序规则提取记录的前 N 项。 从另一方面来说,Limit 节点等价于一个排序规则为空的 TopN 节点。 和谓词下推类似,TopN(及 Limit,下同)下推将查询计划树中的 TopN 计算尽可能下推到距离数据源最近的地 COM_STMT_EXECUTE 的协议功能; • 执行 Prepare / Execute SQL 语句查询; TiDB 优化器对这两类查询的处理是一样的:Prepare 时将参数化的 SQL 查询解析成 AST(抽象语法树),每次 Execute 时根据保存的 AST 和具体的参数值生成执行计划。 当开启执行计划缓存后,每条 Prepare 语句的第一次 Execute 会检查当前查询是否可以使用执行计划缓存, 如果可以则将生成的执行计划放进一个由 Ahead Log),然后再写入内存中的跳表(SkipList,这部分结构又被称作 MemTable)。LSM-tree 引擎由于将用户的随机修改(插入)转化为了对 WAL 文件的顺序写,因此具有比 B 树类 存储引擎更高的写吞吐。 内存中的数据达到一定阈值后,会刷到磁盘上生成 SST 文件 (Sorted String Table),SST 又分为多层(默认至多 6 层),每一层的数据达到一定阈值后会挑选一部分0 码力 | 2259 页 | 48.16 MB | 1 年前3 TiDB v5.2 中文手册子句在 TiDB 查询计划树中对应 Limit 算子节点,ORDER BY 子句在查询计划树中对应 Sort 算子节 点,此外,我们会将相邻的 Limit 和 Sort 算子组合成 TopN 算子节点,表示按某个排序规则提取记录的前 N 项。 从另一方面来说,Limit 节点等价于一个排序规则为空的 TopN 节点。 和谓词下推类似,TopN(及 Limit,下同)下推将查询计划树中的 TopN 计算尽可能下推到距离数据源最近的地 COM_STMT_EXECUTE 的协议功能; • 执行 Prepare / Execute SQL 语句查询; TiDB 优化器对这两类查询的处理是一样的:Prepare 时将参数化的 SQL 查询解析成 AST(抽象语法树),每次 Execute 时根据保存的 AST 和具体的参数值生成执行计划。 当开启执行计划缓存后,每条 Prepare 语句的第一次 Execute 会检查当前查询是否可以使用执行计划缓存, 如果可以则将生成的执行计划放进一个由 Ahead Log),然后再写入内存中的跳表(SkipList,这部分结构又被称作 MemTable)。LSM-tree 引擎由于将用户的随机修改(插入)转化为了对 WAL 文件的顺序写,因此具有比 B 树类 存储引擎更高的写吞吐。 内存中的数据达到一定阈值后,会刷到磁盘上生成 SST 文件 (Sorted String Table),SST 又分为多层(默认至多 6 层),每一层的数据达到一定阈值后会挑选一部分0 码力 | 2259 页 | 48.16 MB | 1 年前3
 TiDB v5.1 中文手册子句在 TiDB 查询计划树中对应 Limit 算子节点,ORDER BY 子句在查询计划树中对应 Sort 算子节 点,此外,我们会将相邻的 Limit 和 Sort 算子组合成 TopN 算子节点,表示按某个排序规则提取记录的前 N 项。 从另一方面来说,Limit 节点等价于一个排序规则为空的 TopN 节点。 和谓词下推类似,TopN(及 Limit,下同)下推将查询计划树中的 TopN 计算尽可能下推到距离数据源最近的地 COM_STMT_EXECUTE 的协议功能; • 执行 Prepare / Execute SQL 语句查询; TiDB 优化器对这两类查询的处理是一样的:Prepare 时将参数化的 SQL 查询解析成 AST(抽象语法树),每次 Execute 时根据保存的 AST 和具体的参数值生成执行计划。 当开启执行计划缓存后,每条 Prepare 语句的第一次 Execute 会检查当前查询是否可以使用执行计划缓存, 如果可以则将生成的执行计划放进一个由 Ahead Log),然后再写入内存中的跳表(SkipList,这部分结构又被称作 MemTable)。LSM-tree 引擎由于将用户的随机修改(插入)转化为了对 WAL 文件的顺序写,因此具有比 B 树类 存储引擎更高的写吞吐。 内存中的数据达到一定阈值后,会刷到磁盘上生成 SST 文件 (Sorted String Table),SST 又分为多层(默认至多 6 层),每一层的数据达到一定阈值后会挑选一部分0 码力 | 2189 页 | 47.96 MB | 1 年前3 TiDB v5.1 中文手册子句在 TiDB 查询计划树中对应 Limit 算子节点,ORDER BY 子句在查询计划树中对应 Sort 算子节 点,此外,我们会将相邻的 Limit 和 Sort 算子组合成 TopN 算子节点,表示按某个排序规则提取记录的前 N 项。 从另一方面来说,Limit 节点等价于一个排序规则为空的 TopN 节点。 和谓词下推类似,TopN(及 Limit,下同)下推将查询计划树中的 TopN 计算尽可能下推到距离数据源最近的地 COM_STMT_EXECUTE 的协议功能; • 执行 Prepare / Execute SQL 语句查询; TiDB 优化器对这两类查询的处理是一样的:Prepare 时将参数化的 SQL 查询解析成 AST(抽象语法树),每次 Execute 时根据保存的 AST 和具体的参数值生成执行计划。 当开启执行计划缓存后,每条 Prepare 语句的第一次 Execute 会检查当前查询是否可以使用执行计划缓存, 如果可以则将生成的执行计划放进一个由 Ahead Log),然后再写入内存中的跳表(SkipList,这部分结构又被称作 MemTable)。LSM-tree 引擎由于将用户的随机修改(插入)转化为了对 WAL 文件的顺序写,因此具有比 B 树类 存储引擎更高的写吞吐。 内存中的数据达到一定阈值后,会刷到磁盘上生成 SST 文件 (Sorted String Table),SST 又分为多层(默认至多 6 层),每一层的数据达到一定阈值后会挑选一部分0 码力 | 2189 页 | 47.96 MB | 1 年前3
 TiDB v5.3 中文手册子句在 TiDB 查询计划树中对应 Limit 算子节点,ORDER BY 子句在查询计划树中对应 Sort 算子节 点,此外,我们会将相邻的 Limit 和 Sort 算子组合成 TopN 算子节点,表示按某个排序规则提取记录的前 N 项。 从另一方面来说,Limit 节点等价于一个排序规则为空的 TopN 节点。 和谓词下推类似,TopN(及 Limit,下同)下推将查询计划树中的 TopN 计算尽可能下推到距离数据源最近的地 COM_STMT_EXECUTE 的协议功能; • 执行 Prepare / Execute SQL 语句查询; TiDB 优化器对这两类查询的处理是一样的:Prepare 时将参数化的 SQL 查询解析成 AST(抽象语法树),每次 Execute 时根据保存的 AST 和具体的参数值生成执行计划。 当开启执行计划缓存后,每条 Prepare 语句的第一次 Execute 会检查当前查询是否可以使用执行计划缓存, 如果可以则将生成的执行计划放进一个由 Ahead Log),然后再写入内存中的跳表(SkipList,这部分结构又被称作 MemTable)。LSM-tree 引擎由于将用户的随机修改(插入)转化为了对 WAL 文件的顺序写,因此具有比 B 树类 存储引擎更高的写吞吐。 内存中的数据达到一定阈值后,会刷到磁盘上生成 SST 文件 (Sorted String Table),SST 又分为多层(默认至多 6 层),每一层的数据达到一定阈值后会挑选一部分0 码力 | 2374 页 | 49.52 MB | 1 年前3 TiDB v5.3 中文手册子句在 TiDB 查询计划树中对应 Limit 算子节点,ORDER BY 子句在查询计划树中对应 Sort 算子节 点,此外,我们会将相邻的 Limit 和 Sort 算子组合成 TopN 算子节点,表示按某个排序规则提取记录的前 N 项。 从另一方面来说,Limit 节点等价于一个排序规则为空的 TopN 节点。 和谓词下推类似,TopN(及 Limit,下同)下推将查询计划树中的 TopN 计算尽可能下推到距离数据源最近的地 COM_STMT_EXECUTE 的协议功能; • 执行 Prepare / Execute SQL 语句查询; TiDB 优化器对这两类查询的处理是一样的:Prepare 时将参数化的 SQL 查询解析成 AST(抽象语法树),每次 Execute 时根据保存的 AST 和具体的参数值生成执行计划。 当开启执行计划缓存后,每条 Prepare 语句的第一次 Execute 会检查当前查询是否可以使用执行计划缓存, 如果可以则将生成的执行计划放进一个由 Ahead Log),然后再写入内存中的跳表(SkipList,这部分结构又被称作 MemTable)。LSM-tree 引擎由于将用户的随机修改(插入)转化为了对 WAL 文件的顺序写,因此具有比 B 树类 存储引擎更高的写吞吐。 内存中的数据达到一定阈值后,会刷到磁盘上生成 SST 文件 (Sorted String Table),SST 又分为多层(默认至多 6 层),每一层的数据达到一定阈值后会挑选一部分0 码力 | 2374 页 | 49.52 MB | 1 年前3
 TiDB v6.1 中文手册count: 14 trade by two players: false 4.3.2.7 实现细节 本小节介绍示例应用程序项目中的组件。 4.3.2.7.1 总览 本示例项目的大致目录树如下所示(删除了有碍理解的部分): . ├ ─ ─ pom.xml └ ─ ─ src └ ─ ─ main ├ ─ ─ java │ └ ─ ─ com │ └ ─ ─ pingcap 10 trade by two players: trade successful 4.3.4.6 实现细节 本小节介绍示例应用程序项目中的组件。 4.3.4.6.1 总览 本示例项目的目录树大致如下所示: . ├ ─ ─ example_project │ ├ ─ ─ __init__.py │ ├ ─ ─ asgi.py │ ├ ─ ─ settings.py │ ├ ─ ─ token 阶段:通常只有几微秒的时间,可以忽略。除非 TiDB 单个实例的连接数达到的token-limit 的限 制,创建连接的时候被限流。 • parse 阶段:query 语句解析为抽象语法树 abstract syntax tree (AST)。 • compile 阶段:根据 parse 阶段输出的 AST 和统计信息,编译出执行计划。整个过程主要步骤为逻辑优化 与物理优化,前者通过0 码力 | 3572 页 | 84.36 MB | 1 年前3 TiDB v6.1 中文手册count: 14 trade by two players: false 4.3.2.7 实现细节 本小节介绍示例应用程序项目中的组件。 4.3.2.7.1 总览 本示例项目的大致目录树如下所示(删除了有碍理解的部分): . ├ ─ ─ pom.xml └ ─ ─ src └ ─ ─ main ├ ─ ─ java │ └ ─ ─ com │ └ ─ ─ pingcap 10 trade by two players: trade successful 4.3.4.6 实现细节 本小节介绍示例应用程序项目中的组件。 4.3.4.6.1 总览 本示例项目的目录树大致如下所示: . ├ ─ ─ example_project │ ├ ─ ─ __init__.py │ ├ ─ ─ asgi.py │ ├ ─ ─ settings.py │ ├ ─ ─ token 阶段:通常只有几微秒的时间,可以忽略。除非 TiDB 单个实例的连接数达到的token-limit 的限 制,创建连接的时候被限流。 • parse 阶段:query 语句解析为抽象语法树 abstract syntax tree (AST)。 • compile 阶段:根据 parse 阶段输出的 AST 和统计信息,编译出执行计划。整个过程主要步骤为逻辑优化 与物理优化,前者通过0 码力 | 3572 页 | 84.36 MB | 1 年前3
 TiDB v5.4 中文手册子句在 TiDB 查询计划树中对应 Limit 算子节点,ORDER BY 子句在查询计划树中对应 Sort 算子节 点,此外,我们会将相邻的 Limit 和 Sort 算子组合成 TopN 算子节点,表示按某个排序规则提取记录的前 N 项。 从另一方面来说,Limit 节点等价于一个排序规则为空的 TopN 节点。 和谓词下推类似,TopN(及 Limit,下同)下推将查询计划树中的 TopN 计算尽可能下推到距离数据源最近的地 COM_STMT_EXECUTE 的协议功能; • 执行 Prepare / Execute SQL 语句查询; TiDB 优化器对这两类查询的处理是一样的:Prepare 时将参数化的 SQL 查询解析成 AST(抽象语法树),每次 Execute 时根据保存的 AST 和具体的参数值生成执行计划。 当开启执行计划缓存后,每条 Prepare 语句的第一次 Execute 会检查当前查询是否可以使用执行计划缓存, 如果可以则将生成的执行计划放进一个由 Ahead Log),然后再写入内存中的跳表(SkipList,这部分结构又被称作 MemTable)。LSM-tree 引擎由于将用户的随机修改(插入)转化为了对 WAL 文件的顺序写,因此具有比 B 树类 存储引擎更高的写吞吐。 内存中的数据达到一定阈值后,会刷到磁盘上生成 SST 文件 (Sorted String Table),SST 又分为多层(默认至多 6 层),每一层的数据达到一定阈值后会挑选一部分0 码力 | 2852 页 | 52.59 MB | 1 年前3 TiDB v5.4 中文手册子句在 TiDB 查询计划树中对应 Limit 算子节点,ORDER BY 子句在查询计划树中对应 Sort 算子节 点,此外,我们会将相邻的 Limit 和 Sort 算子组合成 TopN 算子节点,表示按某个排序规则提取记录的前 N 项。 从另一方面来说,Limit 节点等价于一个排序规则为空的 TopN 节点。 和谓词下推类似,TopN(及 Limit,下同)下推将查询计划树中的 TopN 计算尽可能下推到距离数据源最近的地 COM_STMT_EXECUTE 的协议功能; • 执行 Prepare / Execute SQL 语句查询; TiDB 优化器对这两类查询的处理是一样的:Prepare 时将参数化的 SQL 查询解析成 AST(抽象语法树),每次 Execute 时根据保存的 AST 和具体的参数值生成执行计划。 当开启执行计划缓存后,每条 Prepare 语句的第一次 Execute 会检查当前查询是否可以使用执行计划缓存, 如果可以则将生成的执行计划放进一个由 Ahead Log),然后再写入内存中的跳表(SkipList,这部分结构又被称作 MemTable)。LSM-tree 引擎由于将用户的随机修改(插入)转化为了对 WAL 文件的顺序写,因此具有比 B 树类 存储引擎更高的写吞吐。 内存中的数据达到一定阈值后,会刷到磁盘上生成 SST 文件 (Sorted String Table),SST 又分为多层(默认至多 6 层),每一层的数据达到一定阈值后会挑选一部分0 码力 | 2852 页 | 52.59 MB | 1 年前3
 TiDB v8.0 中文手册token 阶段:通常只有几微秒的时间,可以忽略。除非 TiDB 单个实例的连接数达到的token-limit 的限 制,创建连接的时候被限流。 • parse 阶段:query 语句解析为抽象语法树 abstract syntax tree (AST)。 • compile 阶段:根据 parse 阶段输出的 AST 和统计信息,编译出执行计划。整个过程主要步骤为逻辑优化 与物理优化,前者通过 tidb_session_parse_duration_seconds 代表把 SQL 查询解析成抽象语法树 (AST, Abstract Syntax Tree) 的耗 时。要跳过这部分的耗时,可以使用PREPARE/EXECUTE 语句。 • tidb_session_compile_duration_seconds 代表把抽象语法树编译成执行计划的耗时。要跳过这部分的 耗时,可以使用执行计划缓存。 • tidb 子句在 TiDB 查询计划树中对应 Limit 算子节点,ORDER BY 子句在查询计划树中对应 Sort 算子节 点,此外,我们会将相邻的 Limit 和 Sort 算子组合成 TopN 算子节点,表示按某个排序规则提取记录的前 N 项。 从另一方面来说,Limit 节点等价于一个排序规则为空的 TopN 节点。 和谓词下推类似,TopN(及 Limit,下同)下推将查询计划树中的 TopN 计算尽可能下推到距离数据源最近的地0 码力 | 4805 页 | 101.28 MB | 1 年前3 TiDB v8.0 中文手册token 阶段:通常只有几微秒的时间,可以忽略。除非 TiDB 单个实例的连接数达到的token-limit 的限 制,创建连接的时候被限流。 • parse 阶段:query 语句解析为抽象语法树 abstract syntax tree (AST)。 • compile 阶段:根据 parse 阶段输出的 AST 和统计信息,编译出执行计划。整个过程主要步骤为逻辑优化 与物理优化,前者通过 tidb_session_parse_duration_seconds 代表把 SQL 查询解析成抽象语法树 (AST, Abstract Syntax Tree) 的耗 时。要跳过这部分的耗时,可以使用PREPARE/EXECUTE 语句。 • tidb_session_compile_duration_seconds 代表把抽象语法树编译成执行计划的耗时。要跳过这部分的 耗时,可以使用执行计划缓存。 • tidb 子句在 TiDB 查询计划树中对应 Limit 算子节点,ORDER BY 子句在查询计划树中对应 Sort 算子节 点,此外,我们会将相邻的 Limit 和 Sort 算子组合成 TopN 算子节点,表示按某个排序规则提取记录的前 N 项。 从另一方面来说,Limit 节点等价于一个排序规则为空的 TopN 节点。 和谓词下推类似,TopN(及 Limit,下同)下推将查询计划树中的 TopN 计算尽可能下推到距离数据源最近的地0 码力 | 4805 页 | 101.28 MB | 1 年前3
 TiDB v7.5 中文手册token 阶段:通常只有几微秒的时间,可以忽略。除非 TiDB 单个实例的连接数达到的token-limit 的限 制,创建连接的时候被限流。 • parse 阶段:query 语句解析为抽象语法树 abstract syntax tree (AST)。 • compile 阶段:根据 parse 阶段输出的 AST 和统计信息,编译出执行计划。整个过程主要步骤为逻辑优化 与物理优化,前者通过 tidb_session_parse_duration_seconds 代表把 SQL 查询解析成抽象语法树 (AST, Abstract Syntax Tree) 的耗 时。要跳过这部分的耗时,可以使用PREPARE/EXECUTE 语句。 • tidb_session_compile_duration_seconds 代表把抽象语法树编译成执行计划的耗时。要跳过这部分的 耗时,可以使用执行计划缓存。 • tidb TiDB 查询计划树中对应 Limit 算子节点,ORDER BY 子句在查询计划树中对应 Sort 算子节 点,此外,我们会将相邻的 Limit 和 Sort 算子组合成 TopN 算子节点,表示按某个排序规则提取记录的前 N 项。 1207 从另一方面来说,Limit 节点等价于一个排序规则为空的 TopN 节点。 和谓词下推类似,TopN(及 Limit,下同)下推将查询计划树中的 TopN0 码力 | 4590 页 | 100.91 MB | 1 年前3 TiDB v7.5 中文手册token 阶段:通常只有几微秒的时间,可以忽略。除非 TiDB 单个实例的连接数达到的token-limit 的限 制,创建连接的时候被限流。 • parse 阶段:query 语句解析为抽象语法树 abstract syntax tree (AST)。 • compile 阶段:根据 parse 阶段输出的 AST 和统计信息,编译出执行计划。整个过程主要步骤为逻辑优化 与物理优化,前者通过 tidb_session_parse_duration_seconds 代表把 SQL 查询解析成抽象语法树 (AST, Abstract Syntax Tree) 的耗 时。要跳过这部分的耗时,可以使用PREPARE/EXECUTE 语句。 • tidb_session_compile_duration_seconds 代表把抽象语法树编译成执行计划的耗时。要跳过这部分的 耗时,可以使用执行计划缓存。 • tidb TiDB 查询计划树中对应 Limit 算子节点,ORDER BY 子句在查询计划树中对应 Sort 算子节 点,此外,我们会将相邻的 Limit 和 Sort 算子组合成 TopN 算子节点,表示按某个排序规则提取记录的前 N 项。 1207 从另一方面来说,Limit 节点等价于一个排序规则为空的 TopN 节点。 和谓词下推类似,TopN(及 Limit,下同)下推将查询计划树中的 TopN0 码力 | 4590 页 | 100.91 MB | 1 年前3
 TiDB v7.6 中文手册token 阶段:通常只有几微秒的时间,可以忽略。除非 TiDB 单个实例的连接数达到的token-limit 的限 制,创建连接的时候被限流。 • parse 阶段:query 语句解析为抽象语法树 abstract syntax tree (AST)。 • compile 阶段:根据 parse 阶段输出的 AST 和统计信息,编译出执行计划。整个过程主要步骤为逻辑优化 与物理优化,前者通过 tidb_session_parse_duration_seconds 代表把 SQL 查询解析成抽象语法树 (AST, Abstract Syntax Tree) 的耗 时。要跳过这部分的耗时,可以使用PREPARE/EXECUTE 语句。 • tidb_session_compile_duration_seconds 代表把抽象语法树编译成执行计划的耗时。要跳过这部分的 耗时,可以使用执行计划缓存。 • tidb 子句在 TiDB 查询计划树中对应 Limit 算子节点,ORDER BY 子句在查询计划树中对应 Sort 算子节 点,此外,我们会将相邻的 Limit 和 Sort 算子组合成 TopN 算子节点,表示按某个排序规则提取记录的前 N 项。 从另一方面来说,Limit 节点等价于一个排序规则为空的 TopN 节点。 和谓词下推类似,TopN(及 Limit,下同)下推将查询计划树中的 TopN 计算尽可能下推到距离数据源最近的地0 码力 | 4666 页 | 101.24 MB | 1 年前3 TiDB v7.6 中文手册token 阶段:通常只有几微秒的时间,可以忽略。除非 TiDB 单个实例的连接数达到的token-limit 的限 制,创建连接的时候被限流。 • parse 阶段:query 语句解析为抽象语法树 abstract syntax tree (AST)。 • compile 阶段:根据 parse 阶段输出的 AST 和统计信息,编译出执行计划。整个过程主要步骤为逻辑优化 与物理优化,前者通过 tidb_session_parse_duration_seconds 代表把 SQL 查询解析成抽象语法树 (AST, Abstract Syntax Tree) 的耗 时。要跳过这部分的耗时,可以使用PREPARE/EXECUTE 语句。 • tidb_session_compile_duration_seconds 代表把抽象语法树编译成执行计划的耗时。要跳过这部分的 耗时,可以使用执行计划缓存。 • tidb 子句在 TiDB 查询计划树中对应 Limit 算子节点,ORDER BY 子句在查询计划树中对应 Sort 算子节 点,此外,我们会将相邻的 Limit 和 Sort 算子组合成 TopN 算子节点,表示按某个排序规则提取记录的前 N 项。 从另一方面来说,Limit 节点等价于一个排序规则为空的 TopN 节点。 和谓词下推类似,TopN(及 Limit,下同)下推将查询计划树中的 TopN 计算尽可能下推到距离数据源最近的地0 码力 | 4666 页 | 101.24 MB | 1 年前3
 TiDB v8.1 中文手册token 阶段:通常只有几微秒的时间,可以忽略。除非 TiDB 单个实例的连接数达到的token-limit 的限 制,创建连接的时候被限流。 • parse 阶段:query 语句解析为抽象语法树 abstract syntax tree (AST)。 • compile 阶段:根据 parse 阶段输出的 AST 和统计信息,编译出执行计划。整个过程主要步骤为逻辑优化 与物理优化,前者通过 tidb_session_parse_duration_seconds 代表把 SQL 查询解析成抽象语法树 (AST, Abstract Syntax Tree) 的耗 时。要跳过这部分的耗时,可以使用PREPARE/EXECUTE 语句。 • tidb_session_compile_duration_seconds 代表把抽象语法树编译成执行计划的耗时。要跳过这部分的 耗时,可以使用执行计划缓存。 • tidb TiDB 查询计划树中对应 Limit 算子节点,ORDER BY 子句在查询计划树中对应 Sort 算子节 点,此外,我们会将相邻的 Limit 和 Sort 算子组合成 TopN 算子节点,表示按某个排序规则提取记录的前 N 项。 1214 从另一方面来说,Limit 节点等价于一个排序规则为空的 TopN 节点。 和谓词下推类似,TopN(及 Limit,下同)下推将查询计划树中的 TopN0 码力 | 4807 页 | 101.31 MB | 1 年前3 TiDB v8.1 中文手册token 阶段:通常只有几微秒的时间,可以忽略。除非 TiDB 单个实例的连接数达到的token-limit 的限 制,创建连接的时候被限流。 • parse 阶段:query 语句解析为抽象语法树 abstract syntax tree (AST)。 • compile 阶段:根据 parse 阶段输出的 AST 和统计信息,编译出执行计划。整个过程主要步骤为逻辑优化 与物理优化,前者通过 tidb_session_parse_duration_seconds 代表把 SQL 查询解析成抽象语法树 (AST, Abstract Syntax Tree) 的耗 时。要跳过这部分的耗时,可以使用PREPARE/EXECUTE 语句。 • tidb_session_compile_duration_seconds 代表把抽象语法树编译成执行计划的耗时。要跳过这部分的 耗时,可以使用执行计划缓存。 • tidb TiDB 查询计划树中对应 Limit 算子节点,ORDER BY 子句在查询计划树中对应 Sort 算子节 点,此外,我们会将相邻的 Limit 和 Sort 算子组合成 TopN 算子节点,表示按某个排序规则提取记录的前 N 项。 1214 从另一方面来说,Limit 节点等价于一个排序规则为空的 TopN 节点。 和谓词下推类似,TopN(及 Limit,下同)下推将查询计划树中的 TopN0 码力 | 4807 页 | 101.31 MB | 1 年前3
共 15 条
- 1
- 2













