注意:自定义列存排序键会触发数据重新组织,期间同步延迟会明显增加,建议在业务低峰期操作。
一、使用限制
·自定义排序键必须包含表的主键列。若用户指定的排序键未包含主键,系统会自动将主键列追加到排序键末尾。
·不支持无主键表设置自定义排序键。
·自定义排序键最多包含8个字段列(该上限包含自动补入的主键列)。
·不支持以下类型的列作为排序键:FLOAT、DOUBLE、LONGTEXT、BLOB(含 TINYBLOB、MEDIUMBLOB、LONGBLOB)、BOOLEAN、JSON。
·不支持中文列名或包含特殊字符的列作为排序键,列名只能包含字母、数字和下划线。
·对已设置自定义排序键的表,若对排序键中的列执行 DROP COLUMN、MODIFY COLUMN、RENAME COLUMN、CHANGE COLUMN 或 DROP PRIMARY KEY,会导致该列存表的数据同步中断。
二、通过 CREATE 语句创建自定义排序键表
在读写实例创建表时,可在表定义的 COMMENT 注释中通过 order_key=column1,column2 指定排序键。多列之间用英文逗号分隔。当 COMMENT 中包含其他信息时,建议使用空格将 order_key 与其他内容隔开,便于阅读。
CREATE TABLE '表名' ( …) COMMENT 'order_key=column_name[,column_name]';
示例:
CREATE TABLE part ( p_partkey BIGINT NOT NULL PRIMARY KEY, p_name VARCHAR(55) NOT NULL, p_mfgr CHAR(25) NOT NULL, p_brand CHAR(10) NOT NULL, p_type VARCHAR(25) NOT NULL, p_size BIGINT NOT NULL, p_container CHAR(10) NOT NULL, p_retailprice DECIMAL(15,2) NOT NULL, p_comment VARCHAR(23) NOT NULL) COMMENT '零件信息表 order_key=p_brand,p_container,p_type';
三、通过 ALTER 语句修改排序键
对已创建的表,可在读写实例中执行 ALTER TABLE 修改 COMMENT,为表设置或变更自定义排序键。
ALTER TABLE table_name COMMENT 'order_key=column_name[,column_name]';
示例:
ALTER TABLE part COMMENT '零件信息表 order_key=p_brand,p_container,p_type';
四、确认排序键修改结果
目前暂不提供排序键调整进度的查询接口。修改排序键期间,表依然支持查询。由于排序键变更会触发数据重新组织,同步延迟会在期间增加。可通过观察列存表的同步延迟,判断排序键变更是否完成。
五、使用建议
·order_key 关键字必须使用下划线形式(order_key),不支持 orderkey、orderKey 等其他写法。
·同一 COMMENT 中仅能指定一次 order_key,请勿重复书写。
·排序键列名不能重复。
·修改排序键建议在业务低峰期进行,避免同步延迟增加影响分析查询的数据时效性。