📣

TiDB Cloud Serverless 现已更名为
Starter
!此页面由 AI 自动翻译,英文原文请见
此处。

TiDB Global Sort

概述

TiDB Global Sort 功能增强了数据导入和 DDL(数据定义语言)操作的稳定性和效率。它作为 TiDB 分布式执行框架(DXF) 的通用操作符,为云端提供全局排序服务。

目前,Global Sort 功能支持使用 Amazon S3 作为云存储。

使用场景

Global Sort 功能提升了 IMPORT INTOCREATE INDEX 的稳定性和效率。通过对任务处理的数据进行全局排序,改善了写入 TiKV 的稳定性、可控性和可扩展性。这为数据导入和 DDL 任务提供了更优的用户体验和更高质量的服务。

Global Sort 功能在统一的 DXF 中执行任务,确保数据在全局范围内高效、并行地排序。

限制

目前,Global Sort 功能尚未作为排序查询结果的查询执行过程中的组件使用。

用法

启用 Global Sort,请按照以下步骤操作:

  1. 通过将 tidb_enable_dist_task 设置为 ON 来启用 DXF。从 v8.1.0 开始,该变量默认启用。对于新创建的 v8.1.0 或更高版本的集群,可以跳过此步骤。

    SET GLOBAL tidb_enable_dist_task = ON;
  1. tidb_cloud_storage_uri 设置为正确的云存储路径。参见 示例

    SET GLOBAL tidb_cloud_storage_uri = 's3://my-bucket/test-data?role-arn=arn:aws:iam::888888888888:role/my-role'

实现原理

Global Sort 功能的算法如下:

Algorithm of Global Sort

详细的实现原理如下:

Step 1: 扫描和准备数据

  1. 在 TiDB 节点扫描特定范围的数据后(数据源可以是 CSV 数据或 TiKV 中的表数据):

    1. TiDB 节点将其编码为 Key-Value 对。
    2. TiDB 节点将 Key-Value 对排序成多个块数据段(数据段在本地排序),每个段为一个文件,并上传到云存储。
  2. 同时,TiDB 节点还会为每个段记录一个连续的实际 Key-Value 范围(称为统计文件),这是实现可扩展排序的关键准备。这些文件会与实际数据一同上传到云存储。

Step 2: 排序和分发数据

从步骤 1,Global Sort 程序获得已排序块列表及其对应的统计文件,这些文件提供了本地排序块的数量。程序还拥有一个实际数据范围,可供 PD 用于拆分和分散。接下来执行:

  1. 将统计文件中的记录排序,划分为几乎相等的范围,这些范围作为子任务,将在并行中执行。
  2. 将子任务分发到 TiDB 节点进行执行。
  3. 每个 TiDB 节点独立地将子任务中的数据排序到范围内,并无重叠地导入到 TiKV。

文档内容是否有帮助?