有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
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. 在弹出的对话框中,选择库名表名键名,单击确定
说明
支持对已自定义的排序键进行修改、移除、上移和下移操作,并支持将鼠标悬停至库名左侧的

图标处通过拖动调整已设置排序键的顺序。




后续步骤

1. 继续执行 新建 CDC 任务 中的 设置分区键自定义字段类型映射 高级设置步骤和 CDC 任务校验步骤。
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 hobby
SETTINGS index_granularity = 8192
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

1 rows in set. Elapsed: 0.007 sec.


# 通过指定排序键查询数据
xxx :) select hobby from user_hobby4;

SELECT hobby
FROM user_hobby4

┌─hobby─┐
│ 武术 │
│ 音乐 │
│ 马术 │
└───────┘

3 rows in set. Elapsed: 0.007 sec.