推荐原因
推荐的列可以用作表的 sort key。
挑选的是经常出现在过滤语句中的列。如果将这些列设置为表的 sort key,可以加快 query 的执行速度。
如何启用
- 可以在 workspace 上设置 property,系统会分析 workspace 下所有的表。
ALTER WORKSPACE workspace_name SET properties (auto_index='day[,150,5,100]');
比如:
ALTER WORKSPACE quick_start SET properties (auto_index='day');
ALTER WORKSPACE quick_start SET properties (auto_index='day,150,5,100');
第一个参数为必须设置,即指定是每天收集还是每月收集,每月收集为每月1号收集,收集时间为晚上6点
第二个参数为使用最近多长时间的job(单位是分钟),默认为150
第三个参数为job需要重复多少次才会被使用,默认为5
第四个参数为每个列使用的最多的job数,默认为100
系统会自动收集每个 schema 中过滤语句使用最多的 10 张表。
如何查询
Select * from information_schema.sortkey_candidates;
返回结果比如:
instance_id,workspace_id,workspace_name,schema_id,schema_name,table_id,table_name,col,statement,ratio,insert_time,p_date
11111111111,855911111111,aaaaaaaaaaa,23671111111111,ddddddddd,84465111,aaaaaaaaaaa.ddddddddd.member,brandid,alter table aaaaaaaaaaa.ddddddddd.member set properties("hint.sort.columns"="brandid"), 2.21%,05:49.1,2024/11/7
11111111111,855911111111,aaaaaaaaaaa,23671111111111,ddddddddd,84465111,aaaaaaaaaa.ddddddddd.member,birthday,alter table aaaaaaaaaa.ddddddddd.member set properties("hint.sort.columns"="birthday"),0.01%,05:49.1,2024/11/7
11111111111,855911111111,aaaaaaaaaaa,23671111111111,ddddddddd,84465111,aaaaaaaaaaa.ddddddddd.member,id,alter table aaaaaaaaaaa.ddddddddd.member set properties("hint.sort.columns"="id"),0.01%,05:49.1,2024/11/7
可以看到对于aaaaaaaaaaa.ddddddddd.member表来说brandid的提升效果最高,所以设置为sortkey alter table aaaaaaaaaaa.ddddddddd.member set properties("hint.sort.columns"="brandid"),此设置会对
包含的列为:
instance_id
instance_id
、
workspace_id
workspace_id
、
workspace_name
workspace_name
、
schema_id
schema_id
、
schema_name
schema_name
、
table_id
table_id
、
table_name
table_name
、
col
col
、
statement
statement
、
ratio
ratio
、
insert_time
insert_time
、
p_date
p_date
。
其中
p_date
p_date
为分区列,其格式是
yyyy-mm-dd
yyyy-mm-dd
。
insert_time
insert_time
是收集结果插入的时间。
col
col
是推荐的列,当前为单列。
statement
statement
是用于将推荐列设置为排序列的 SQL 语句。
ratio
ratio
为估算的提升效果,为百分比。
使用建议
建议使用 analyze语句 对表收集一下 column 的 stats,这会提高推荐的准确性。