一、背景信息
·排序键(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. 开启自定义排序键开关。
3. 在排序键列表右上方单击新增。
4. 在弹出的对话框中,选择库名、表名、键名,单击确定。
注意:说明:
注意:支持对已自定义的排序键进行修改、移除、上移和下移操作,并支持将鼠标悬停至库名左侧的图标处通过拖动调整已设置排序键的顺序。
五、后续步骤
1. 继续执行 新建 CDC 任务 中的 设置分区键 和 自定义字段类型映射 高级设置步骤和 CDC 任务校验步骤。
2. CDC 任务创建成功后,连接 TDSQL-H LibraDB 实例,可通过指定排序键查询数据。
示例:
# 查看建表语句和指定排序键(即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.