一、不支持自定义列存排序键的场景
·自定义列存排序键必须包含主键字段。分析引擎会判断是否包含主键,如果不包含,则会隐式地为排序键加上主键字段。
·不支持 float,double,longtext,blob,boolean,json 等列作为自定义排序键。
·不支持无主键表自定义列存排序键。
·对表自定义列存排序键之后,如果对排序键列执行了 DDL 操作(drop column、modify column、rename column、change column、drop primary key),则会导致此列存表的同步中断。例如排序键修改为了“id,c1,c2”,如果在主节点中对 id,c1,c2这三列执行以上操作就会出现同步中断问题。
·自定义列存排序键最多包含八个字段列。
·暂不支持中文列名和包含特殊字符的列作为排序键。
二、通过 create 语句创建自定义列存排序键表
在读写实例创建表时,可通过在表定义语句 COMMENT 注释信息中添加 order_key=column1,column2 信息实现,需要与其他注释通过空格分开。
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 语句为表添加自定义列存排序键,语法如下:
ALTER TABLE table_name COMMENT 'order_key=column_name[,column_name]';## 举例:ALTER TABLE part COMMENT '零件信息表 order_key=p_brand,p_container,p_type';
四、如何确认排序键修改成功
当前暂无法支持查看排序键的调整进度,但在排序键调整的过程中,依然可针对表数据进行查询。排序键调整过程中会暂停数据同步,你可以通过观测同步延迟以确认是否完成排序键修改。
五、不规范的排序键语法
·排序键中包含重复的列名:
ALTER TABLE part COMMENT '零件的信息表 order_key=p_partkey,p_type,p_partkey COLUMNAR=1';
·指定不存在的列作为排序键
ALTER TABLE part COMMENT '零件的信息表 order_key=column';
·关键字错误
ALTER TABLE part COMMENT '零件的信息表 ORDERKEY=column';
·与其他 COMMENT 信息不加空格区分:
ALTER TABLE part COMMENT '零件的信息表order_key=p_partkey';
·连续使用多个排序键关键字:
ALTER TABLE part COMMENT '零件的信息表 order_key=p_partkey order_key=p_partkey';
·排序键关键字为空:
ALTER TABLE part COMMENT '零件的信息表 order_key= COLUMNAR=1';