· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1482
11.3.2 理解 TiDB
执行计划 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1558
11.3.4 控制
执行计划· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · able_instance_plan_
�→ cache-从-v840-版本开始引入">实例级
执行计划缓存(实验特性)
实例级执行计划缓存允许同一个 TiDB 实例的所有会话共享执行计划缓存。
�→ 与现有的会话级执行计划缓存相比,实例级执行计划缓存能够在内存中缓存更多执行计划,减少 SQL
�→ 编译时间,从而降低 SQL 整体运行时间,提升 OLTP 的性能和吞吐,同时更好地控制内存使用, 0 码力 |
5095 页 |
104.54 MB
| 1 年前 3 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1105
11.3.2 理解 TiDB 执行计划 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1178
11.3.4 控制执行计划· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 200%。
更多信息,请参考用户文档。
• 增强缓存非 Prepare 语句执行计划的能力(实验特性)#36598 @qw4990
TiDB v7.0.0 引入了非 Prepare 语句的执行计划缓存作为实验特性,以提升在线交易场景的并发处理能力。
在 v7.1.0 中,TiDB 继续增强非 Prepare 语句执行计划,支持缓存更多模式的 SQL。
为了提升内存利用率,TiDB v7.1.0 将非 0 码力 |
4369 页 |
98.92 MB
| 2 年前 3 11.3 SQL 性能调优 ..... 1122
11.3.1 SQL 性能调优 ..... 1122
11.3.2 理解 TiDB 执行计划 ..... 1122
11.3.3 SQL 优化流程 ..... 1198
11.3.4 控制 执行计划 ..... 1302
12 教程 ..... 1352
12.1 单区域多 AZ 部署 TiDB ..... 1352
12.1 描述
可扩展性与性能
跨数据库绑定执行计划
在处理上百个 schema 相同的数据库时,针对其中一个数据库的 SQL binding 通常也适用于其它的数据库
。例如,在 SaaS 或 PaaS 数据平台中,每个用户通常各自维护单独的数据库,
这些数据库具有相同的 schema 并运行着类似的 SQL。在这种情况下,逐一为每个数据库做 SQL
绑定是不切实际的。TiDB v7.6.0 引入跨数据库绑定 执行计划,支持在所有 schema
相同的数据库之间匹配绑定计划。
0 码力 |
4666 页 |
101.24 MB
| 2 年前 3 . 377
9.3 SQL 性能调优 ..... 379
9.3.1 SQL 性能调优 ..... 379
9.3.2 理解 TiDB 执行计划 ..... 379
9.3.3 SQL 优化流程 ..... 440
9.3.4 控制执行计划 ..... 486
0 教程 ..... 506
10.1 同城多数据中心部署 TiDB ..... 506
10.1.1 了解 版本中,你可以获得以下关键特性:
· 支持基于部分函数创建表达式索引 (Expression index),极大提升查询的性能。
· 提升优化器的估算准确度 (Cardinality Estimation),有助于选中最优的执行计划。
· 锁视图 (Lock View) 成为 GA 特性,提供更直观方便的方式观察事务加锁情况以及排查死锁问题。
· 新增 TiFlash I/O 限流功能,提升 TiFlash 读写稳定性。
Lock)|实验特性|实验特性|实验特性|实验特性|
#### 2.3.4 高级 SQL 功能
|高级 SQL 功能|5.2|5.1|5.0|4.0|
|---|---|---|---|---|
|执行计划缓存|实验特性|实验特性|实验特性|实验特性|
|执行计划管理 (SPM)|Y|Y|Y|Y|
|下推计算结果缓存 (Coprocessor Cache)|Y|Y|Y|实验特性|
|Stale Read|Y|Y|N|N|
|Follower 0 码力 |
2259 页 |
48.16 MB
| 2 年前 3 366
9.3 SQL 性能调优 ..... 368
9.3.1 SQL 性能调优 ..... 368
9.3.2 理解 TiDB 执行计划 ..... 368
9.3.3 SQL 优化流程 ..... 428
9.3.4 控制执行计划 ..... 473
10 教程 ..... 491
10.1 同城多数据中心部署 TiDB ..... 491
10.1.1 了解 Plan Cache 中对 PointGet 和 TableDual 错误的重复使用 #23187 #23144 #23304 #23290
- 修复优化器在为聚簇索引构建 IndexMerge 执行计划时出现的错误 #23906
- 修复 BIT 类型相关错误的类型推导 #23832
- 修复某些优化器 Hint 在 PointGet 算子存在时无法生效的问题 #23570
- 修复 DDL Lock)|实验特性|实验特性|实验特性|实验特性|
#### 2.3.4 高级 SQL 功能
|高级 SQL 功能|5.2|5.1|5.0|4.0|
|---|---|---|---|---|
|执行计划缓存|实验特性|实验特性|实验特性|实验特性|
|执行计划管理 (SPM)|Y|Y|Y|Y|
|下推计算结果缓存 (Coprocessor Cache)|Y|Y|Y|实验特性|
|Stale Read|Y|Y|N|N|
|Follower 0 码力 |
2189 页 |
47.96 MB
| 2 年前 3 397
9.3 SQL 性能调优 ..... 399
9.3.1 SQL 性能调优 ..... 399
9.3.2 理解 TiDB 执行计划 ..... 399
9.3.3 SQL 优化流程 ..... 459
9.3.4 控制执行计划 ..... 508
10 教程 ..... 529
10.1 同城多数据中心部署 TiDB ..... 529
10.1.1 了解 #2156
* 当同步任务状态正常时,不再显示历史错误信息,避免误导用户 #2242
#### 2.2.6 Bug 修复
• TiDB
- 修复在分区中下推聚合算子时,因浅拷贝 schema 列导致执行计划出错,进而导致执行时报错的问题 #27797 #26554
- 修复 plan cache 无法感知 unsigned 标志变化的问题 #28254
- 修复当分区功能出现 out of range #### 2.3.4 高级 SQL 功能
|高级 SQL 功能|5.3|5.2|5.1|5.0|4.0|
|---|---|---|---|---|---|
|执行计划缓存|Y|实验特性|实验特性|实验特性|实验特性|
|执行计划管理 (SPM)|Y|Y|Y|Y|Y|
|下推计算结果缓存 (Coprocessor Cache)|Y|Y|Y|Y|实验特性|
|Stale Read|Y|Y|Y|N|N| 0 码力 |
2374 页 |
49.52 MB
| 2 年前 3 466
9.3 SQL 性能调优 ..... 468
9.3.1 SQL 性能调优 ..... 468
9.3.2 理解 TiDB 执行计划 ..... 468
9.3.3 SQL 优化流程 ..... 529
9.3.4 控制执行计划 ..... 582
10 教程 ..... 606
10.1 同城多数据中心部署 TiDB ..... 606
10.1.1 了解 TiKV Server 将采用统一的参数命名方式来管理日志命名、输出格式、轮转和过期的规则。参见 TiKV 配置文件 - log。
- 自 v5.4.0 起,对于通过 Plan Cache 已经缓存的执行计划,如果为其创建绑定 (Binding),会使得对应查询已经缓存的计划失效。v5.4.0 前已经缓存的计划不受新 Binding 的影响。
在 v5.3 及更早版本中,TiDB Data Migration 等占用空间较大的统计信息同步加载到内存,提高该 SQL 语句优化时统计信息的完整性。用户文档
##### 2.2.2.4 稳定性
## · 支持统计信息采集配置持久化
统计信息是优化器生成执行计划时所参考的基础信息之一,统计信息的准确性直接影响生成的执行计划是否合理。为了保证统计信息的准确性,有时候需要针对不同的表、分区、索引设置不同的采集配置项。
TiDB 从 v5.4.0 版本开始支持 ANALYZE 配置持久化功 0 码力 |
2852 页 |
52.59 MB
| 2 年前 3 。有兴趣的可以去看看COPY的源码,那里也许有可以优化的地方。
### 2. 执行计划对性能的影响
所谓执行计划,就是 GP 根据 SQL 和相关统计信息规划出的一种执行线路图。之后的执行将严格按照该线路图执行(至少目前的产品特点如此),执行计划的优劣直接决定了 SQL 性能。在 pgAdmin3 中看到如下执行计划节点时,需要警惕:
## 广播 (Broadcast Motion)
## 该操作的代价是,全部数据需要在每个 ——这与分布键的选择有直接关系。建议,不要选择组合分布键,因为,在两表 JOIN 时,只有关联字段包含所有分布键,才能确保数据不需要任何移动就满足 LocalJoin 的要求。
然后,再来说说,执行计划根据什么来决定数据在节点之间如何移动。当两张表关联时,到底是选择重分布还是选择广播。需要分以下几种情况来说明:
1)两张表的关联字段都包含了分布键,此场景不需要在节点之间移动数据。
2)有一张 含分布键,意思是包含所有用作分布键的字段,即分布键的超集)。
后两种场景,都需要有数据移动,GP 的执行规划器会选择哪一种呢?下面详细分析:
在执行计划中,每个有结果集的节点都会有 rows 与 width 两个指标,这两个指标的乘积表示执行计划对每个 Primary Instance 上此节点数据尺寸的评估,单位为字节。我们假设集群中 PrimaryInstance 的数量为 N,缺省情况下,执行规划器使用 0 码力 |
64 页 |
2.73 MB
| 2 年前 3
|