TiDB グローバルソート

注記:

この機能はTiDB Cloudサーバーレスクラスターでは使用できません。

概要

TiDB グローバル ソート機能は、データ インポートおよび DDL (データ定義言語) 操作の安定性と効率性を高めます。1 TiDB 分散実行フレームワーク (DXF)汎用演算子として機能し、クラウド上でグローバル ソート サービスを提供します。

グローバルソート機能は現在、クラウドstorageとして Amazon S3 の使用のみをサポートしています。将来のリリースでは、POSIX などの複数の共有storageインターフェースをサポートするように拡張され、さまざまなstorageシステムとのシームレスな統合が可能になります。この柔軟性により、さまざまなユースケースで効率的かつ適応性の高いデータソートが可能になります。

ユースケース

グローバルソート機能は、 IMPORT INTOCREATE INDEXの安定性と効率性を高めます。タスクによって処理されるデータをグローバルにソートすることで、TiKV へのデータ書き込みの安定性、制御性、スケーラビリティが向上します。これにより、データインポートおよび DDL タスクのユーザーエクスペリエンスが向上し、サービスの品質が向上します。

グローバル ソート機能は、統合された DXF 内でタスクを実行し、グローバル規模でデータの効率的かつ並列的なソートを保証します。

制限事項

現在、グローバル ソート機能は、クエリ結果のソートを担当するクエリ実行プロセスのコンポーネントとして使用されていません。

使用法

グローバルソートを有効にするには、次の手順に従います。

  1. 値をtidb_enable_dist_taskからONに設定して DXF を有効にします。

    SET GLOBAL tidb_enable_dist_task = ON;
  1. tidb_cloud_storage_uri正しいクラウドstorageパスに設定します。3 参照してください。

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

注記:

IMPORT INTOの場合、 CLOUD_STORAGE_URIオプションを使用してクラウドstorageパスを指定することもできます。 tidb_cloud_storage_uriCLOUD_STORAGE_URI両方に有効なクラウドstorageパスが設定されている場合、 CLOUD_STORAGE_URIの設定がIMPORT INTOに有効になります。

実施原則

グローバル ソート機能のアルゴリズムは次のとおりです。

Algorithm of Global Sort

詳細な実装原則は次のとおりです。

ステップ1: データをスキャンして準備する

  1. TiDB ノードが特定の範囲のデータをスキャンした後 (データ ソースは CSV データまたは TiKV のテーブル データのいずれかになります)、次のようになります。

    1. TiDB ノードはそれらをキーと値のペアにエンコードします。
    2. TiDB ノードは、キーと値のペアを複数のブロック データ セグメントに分類します (データ セグメントはローカルに分類されます)。各セグメントは 1 つのファイルであり、クラウドstorageにアップロードされます。
  2. TiDB ノードは、各セグメントの実際のキーと値の範囲 (統計ファイルと呼ばれる) も連続して記録します。これは、スケーラブルなソートの実装に不可欠な準備です。これらのファイルは、実際のデータとともにクラウドstorageにアップロードされます。

ステップ2: データを分類して分配する

ステップ 1 から、グローバル ソート プログラムは、ソートされたブロックのリストとそれに対応する統計ファイルを取得します。これにより、ローカルにソートされたブロックの数が得られます。プログラムには、PD が分割および分散に使用できる実際のデータ スコープもあります。次の手順が実行されます。

  1. 統計ファイル内のレコードを並べ替えて、ほぼ等しいサイズの範囲に分割します。これは、並列で実行されるサブタスクです。
  2. サブタスクを TiDB ノードに分散して実行します。
  3. 各 TiDB ノードは、サブタスクのデータを範囲ごとに独立して分類し、重複することなく TiKV に取り込みます。

このページは役に立ちましたか?