CDC 支持自定义排序键。用户可根据实际业务需求,在添加 CDC 的高级设置步骤自定义排序键。CDC 任务同步成功后,可通过指定排序键查询数据,提升查询性能。
背景信息
排序键(ORDER BY)用于指定在一个数据片段内,数据以何种标准排序。默认情况下主键(PRIMARY KEY)与排序键相同。
如果用户不定义排序键,TDSQL-H LibraDB 优先使用主键作为排序键,其次将检测到的第一个“不可为 NULL 的唯一键”作为排序键。
使用限制
一张表仅支持选择一个列名(即键名)作为排序键。
前提条件
已在 CDC 任务源端准备好待设置排序键的数据表。
本文示例中,测试所用的 MySQL 库表名为
zm1.user_hobby4
。建表语句如下:CREATE TABLE `user_hobby4` (`hobby_id` INT NOT NULL AUTO_INCREMENT,`user_id` INT NOT NULL,`hobby` VARCHAR(45) NOT NULL,PRIMARY KEY (`hobby_id`,`user_id`),CONSTRAINT `unique_user_hobby` UNIQUE(`hobby`));
操作步骤
1. 新建 CDC 任务,进入高级设置步骤。
2. 开启自定义排序键开关。n
3. 在排序键列表右上方单击新增。
4. 在弹出的对话框中,选择库名、表名、键名,单击确定。
说明
支持对已自定义的排序键进行修改、移除、上移和下移操作,并支持将鼠标悬停至库名左侧的
图标处通过拖动调整已设置排序键的顺序。
后续步骤
2. CDC 任务创建成功后,连接 TDSQL-H LibraDB 实例,可通过指定排序键查询数据。n示例:
# 查看建表语句和指定排序键(即ORDER BY)xxx :) Show create table user_hobby4_local;SHOW CREATE TABLE user_hobby4_local┌─statement──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐│ CREATE TABLE zm1.user_hobby4_local(`hobby_id` Int32,`user_id` Int32,`hobby` String,`_sign` Int8,`_version` UInt64)ENGINE = ReplicatedReplacingMergeTree('/xxx/tables/xxx/{shard}', '{replica}', _version)ORDER BY hobbySETTINGS index_granularity = 8192 │└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘1 rows in set. Elapsed: 0.007 sec.# 通过指定排序键查询数据xxx :) select hobby from user_hobby4;SELECT hobbyFROM user_hobby4┌─hobby─┐│ 武术 ││ 音乐 ││ 马术 │└───────┘3 rows in set. Elapsed: 0.007 sec.