推荐原因
推荐的列可以用来做表的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,workspace_id,workspace_name,schema_id,schema_name,table_id,table_name,col,statement,ratio,insert_time,p_date。
其中p_date为分区列,格式是 yyyy-mm-dd
insert_time是收集结果插入的时间
col是推荐的列,当前为单列
statement是如何将推荐列设置为排序列的sql语句
ratio为估算的提升效果,为百分比
使用建议
建议使用analyze语句对表收集一下column的stats,会提高推荐的准确性