-
Greenplum内核揭秘之排序算法 5 ● 内排序算法 ● 外排序算法 ● Greenplum TupleSort ● 排序在Greenplum中的应用 Outline 6 ● 冒泡排序 ● 插入排序 ● 快速排序 ● 堆排序 ● 基数排序 内排序算法 7 快速排序是最常用的排序算法,由Tony Hoare在1959年发明。 快速排序算法的三个步骤: ● 挑选基准值 列分 别进行排序 快速排序 8 ● 快速排序算法每次选取一个基准元素,将比基准元素小的排到基准元素左边, 比基准元素大的排到基准元素的右边,从而将待排序数组分成两个子集。 快速排序 6 8 3 2 7 1 7 9 8 7 7 9 6 3 2 1 分治法 9 快速排序 ● 快速排序算法: 10 堆排序是最常用的排序算法,由J.Williams在1964年发明。 ● 堆 堆是一种近似完全二叉树的结构,最大值堆要求每个子节点的键值总是小于父 节点。最小值堆要求每个子节点的键值总是大于父节点。 堆排序算法 ● 步骤1:建立最大值堆,最大元素在堆顶 ● 步骤2:重复将堆顶元组移除并插入到排序数组,更新堆使其保持堆的性质 ● 步骤3:当堆的元素个数为零时,数组排序完毕 堆排序 11 ● 建堆 堆排序 9 5 8 1 3 6 2 1 2 5 9 8
0 码力 |
52 页 |
2.05 MB
| 1 年前 3
-
下推到 TableScan 算 子。 更多信息,请参考用户文档。 34 • TiFlash 支持根据网络交换数据量自动选择 MPP 模式的 Join 算法 #7084 @solotzg TiFlash MPP 模式有多种 Join 算法。在 v7.1.0 之前的版本中,TiDB 根据变量tidb_broadcast_join_threshold �→ _count 和tidb_broadc MPP 模式是否使用 Broad- cast Hash Join 算法。 在 v7.1.0 中,TiDB 引入变量tidb_prefer_broadcast_join_by_exchange_data_size,控制是否基于最小 网络数据交换策略选择 MPP Join 算法。该变量默认关闭,表示默认保持 v7.1.0 之前的算法选择策略。 如需开启,请设置该变量为 ON。开启后,你无需再手动调整 eshold_count 和tidb_broadcast_join_threshold_size 的阈值(此时这两个变量将不再生效),TiDB 会自动估算不同 Join 算法所需进行网络交换的数据量,然后选择综合开销较小的算法,从而减少网络流量,提升 MPP 查 询性能。 更多信息,请参考用户文档。 • 支持自适应副本读取缓解读热点 #14151 @sticnarf @you06 在读热点场景中,热点
0 码力 |
4369 页 |
98.92 MB
| 1 年前 3
-
_outer �→ _join_ �→ reorder �→ 修改 经进一 步的测 试后, 该变量 默认值 从 OFF 修改为 ON,表 示默认 启用 Outer Join 的Join Reorder 算法。 39 变量名 修改类型 描述 tidb_cost �→ _model �→ _ �→ version �→ 修改 经进一 步的测 试后, 该变量 默认值 从 1 修 改为 2, 表示默 认使用 AUTO_INCREMENT 列 Y Y Y Y Y Y Y Y AUTO_RANDOM 列 Y Y Y Y Y Y Y Y TTL (Time to Live) E N N N N N N N DDL 算法断言 Y Y Y Y Y Y Y Y 在单条语句中添加多列 Y E E E E E E E 更改列类型 Y Y Y Y Y Y N N 临时表 Y Y Y Y N N N N 并行 DDL Y origin %d 的错误。更多细 节,请参考ALTER TABLE。 • TiDB 中,ALGORITHM={INSTANT,INPLACE,COPY} 语法只作为一种指定,并不更改 ALTER 算法,详情参 阅ALTER TABLE。 • 不支持添加或删除 CLUSTERED 类型的主键。要了解关于 CLUSTERED 主键的详细信息,请参考聚簇索引。 • 不支持指定不同类型的索引 (HA
0 码力 |
4049 页 |
94.00 MB
| 1 年前 3
-
• BR 快照恢复速度提升 GA #50701 @3pointer @Leavrth 从 TiDB v8.0.0 版本起,BR 快照恢复提速功能正式发布并默认启用。通过采用粗粒度打散 Region 算法、批 量创建库表、降低 SST 文件下载和 Ingest 操作之间的相互影响、加速表统计信息恢复等改进措施,快照 恢复的速度有大幅提升。在实际案例中,单个 TiKV 节点的数据恢复速度稳定在 1.2 Region 算法会占用大量的外部 存储带宽,请避免因为外部带宽不足导致的对其他业务的影响。 更多信息,请参考用户文档。 • 新增支持下推以下函数到 TiFlash #50975 #50485 @yibin87 @windtalker – CAST(DECIMAL AS DOUBLE) – POWER() 更多信息,请参考用户文档。 • TiDB 的并发 HashAgg 算法支持数据落盘(实验特性)#35637 TiDB 版本中,HashAgg 算子的并发算法不支持数据落盘。当 SQL 语句的执行计划包含并发的 HashAgg 算子时,该 SQL 语句的所有数据都只能在内存中进行处理。这导致内存需要处理大量数据,当 超过内存限制时,TiDB 只能选择非并发 HashAgg 算法,无法通过并发提升性能。 在 v8.0.0 中,TiDB 的并发 HashAgg 算法支持数据落盘。在任意并发条件下,HashAgg
0 码力 |
4805 页 |
101.28 MB
| 1 年前 3
-
1/system-variables#tidb_schema_cache_ �→ size-从-v800-版本开始引入">schema 缓存系统,为表元数据提供了基于 LRU (Least �→ Recently Used)
算法的缓存策略,优先将最近访问频率较高的表元数据存储在缓存中, �→ 从而减少表数量较多场景下的内存占用。
- 支持在
auto analyze
中配置0 码力 |
4807 页 |
101.31 MB
| 1 年前 3
-
照备份数据">BR �→ 快照恢复速度最高提升 10 倍(实验特性)
BR v7.6.0 实验性地引入了粗粒度打散 Region 算法,用于提升集群的快照恢复速度。在 TiKV �→ 节点较多的集群中,该算法可显著提高集群资源利用率,更均匀地分配负载, �→ 同时更好地利用每个节点的网络带宽。在一些实际案例中,该特性可将恢复速度最高提升约 10 倍 �→ 。 | 的版本中,Region 打散算法是性能恢复的主要瓶颈。在 v7.6.0 中,BR 优化了 Region 打散算法,可以迅速 将恢复任务拆分为大量小任务,并批量分散到所有 TiKV 节点上。新的并行恢复算法充分利用每个 TiKV 节点的所有资源,实现了并行快速恢复。在实际案例中,大规模 Region 场景下,集群快照恢复速度最 高提升约 10 倍。 目前,新的粗粒度 Region 打散算法为实验特性,你可以配置 打散算法为实验特性,你可以配置 br 新增的命令行参数 --granularity=" �→ coarse-grained" 启用新算法。例如: br restore full \ --pd "${PDIP}:2379" \ --storage "s3://${Bucket}/${Folder}" \ --s3.region "${region}" \ --granularity "coarse-grained" 0 码力 |
4666 页 |
101.24 MB
| 1 年前 3
-
Coprocessor request 的 超时时间。 39 配置文件 配置项 修改类型 描述 TiKV raftstore �→ . �→ inspect �→ - �→ interval �→ 修改 经过算法 调优后, 默认值由 500ms 调整 为 100ms, 以提升慢 节点检测 的灵敏度。 TiKV raftstore �→ . �→ region �→ - �→ compact �→ -min- Y Y4 Y Y Y Y Y Y Y AUTO_RANDOM 列 Y Y Y Y Y Y Y Y Y Y TTL (Time to Live) Y Y E N N N N N N N DDL 算法断言 Y Y Y Y Y Y Y Y Y Y 在单条语句中添加多列 Y Y Y E E E E E E E 更改列类型 Y Y Y Y Y Y Y Y N N 临时表 Y Y Y Y Y Y N origin %d 的错误。更多细 节,请参考ALTER TABLE。 • TiDB 中,ALGORITHM={INSTANT,INPLACE,COPY} 语法只作为一种指定,并不更改 ALTER 算法,详情参 阅ALTER TABLE。 • 不支持添加或删除 CLUSTERED 类型的主键。要了解关于 CLUSTERED 主键的详细信息,请参考聚簇索引。 • 不支持指定不同类型的索引 (HA
0 码力 |
4590 页 |
100.91 MB
| 1 年前 3
-
参数控制是否开启该功能。 更多信息,请参考用户文档。 • TiCDC 引入 Checksum V2 算法校验 Update 或 Delete 事件中 Old Value 数据 #10969 @3AceShowHand 从 v8.4.0 开始,TiDB 和 TiCDC 引入 Checksum V2 算法,解决了 Checksum V1 在执行 ADD COLUMN 或 DROP COLUMN 后无法正确校验 Value 数据的问题。对于 v8.4.0 及之后新创建的集群,或从之 前版本升级到 v8.4.0 的集群,启用单行数据 Checksum 正确性校验功能后,TiDB 默认使用 Checksum V2 算法 进行 Checksum 计算和校验。TiCDC 支持同时处理 V1 和 V2 两种 Checksum。该变更仅影响 TiDB 和 TiCDC 内部 实现,不影响下游 Kafka consumer 的 crypter �→ . �→ method 新增 设置日志 备份数据 的加密算 法,支持 aes128- �→ ctr、 aes192- �→ ctr 和 aes256- �→ ctr 三 种算法, 缺省值为 plaintext, 表示不加 密。 BR --master- �→ key 新增 设置日志 备份数据 的主密钥, 可以是基 于本地磁 盘的主密 钥或基于 云 KMS (Key
0 码力 |
5072 页 |
104.05 MB
| 9 月前 3
-
参数控制是否开启该功能。 更多信息,请参考用户文档。 • TiCDC 引入 Checksum V2 算法校验 Update 或 Delete 事件中 Old Value 数据 #10969 @3AceShowHand 从 v8.4.0 开始,TiDB 和 TiCDC 引入 Checksum V2 算法,解决了 Checksum V1 在执行 ADD COLUMN 或 DROP COLUMN 后无法正确校验 Value 数据的问题。对于 v8.4.0 及之后新创建的集群,或从之 前版本升级到 v8.4.0 的集群,启用单行数据 Checksum 正确性校验功能后,TiDB 默认使用 Checksum V2 算法 进行 Checksum 计算和校验。TiCDC 支持同时处理 V1 和 V2 两种 Checksum。该变更仅影响 TiDB 和 TiCDC 内部 实现,不影响下游 Kafka consumer 的 crypter �→ . �→ method 新增 设置日志 备份数据 的加密算 法,支持 aes128- �→ ctr、 aes192- �→ ctr 和 aes256- �→ ctr 三 种算法, 缺省值为 plaintext, 表示不加 密。 BR --master- �→ key 新增 设置日志 备份数据 的主密钥, 可以是基 于本地磁 盘的主密 钥或基于 云 KMS (Key
0 码力 |
5095 页 |
104.54 MB
| 9 月前 3
-
com/zh/tidb/v8.2/system-variables#tidb_enable_parallel_hashagg_ �→ spill-从-v800-版本开始引入">并行 HashAgg
算法支持数据落盘成为正式功能 (GA)
HashAgg 是 TiDB 中常用的聚合算子,用于快速聚合具有相同字段值的行。TiDB v8.0.0 引入并行 �→ HashAgg 更多信息,请参考用户文档。 • TiDB 的并行 HashAgg 算法支持数据落盘成为正式功能 (GA) #35637 @xzhangxian1008 TiDB v8.0.0 以实验特性引入了并行 HashAgg 算法支持数据落盘功能。在 v8.2.0 中,该功能成为正式功能 (GA)。TiDB 在使用并行 HashAgg 算法时,将根据内存使用情况自动触发数据落盘,从而兼顾查询性能和 数据处理量。该功能默认开启,控制该功能的变量 TiKV 节点上因 I/O 抖 动导致的长尾延迟。 TiKV server.grpc- �→ compression-type 修改 该配置项现在也会影响 TiKV 向 TiDB 发送的 响应消息的压缩算法。开启压缩可能消耗 更多 CPU 资源。 TiFlash security.redact_info_ �→ log 修改 可选值新增 marker 选项。当配置项的值设 置为 marker 时,日志中的用户数据会被标 0 码力 |
4987 页 |
102.91 MB
| 9 月前 3
|