1 .一种数据库中数据混合存储动态调整方法,其特征在于根据设定的权重计算规则、
使用场景的SQL和表结构评估适合行存的列以及适合列存的列,具体过程为:
场景1:当业务中较多的SQL中涉及表的列总数相对较少,将涉及的相关列指定为列存
储格式,其中,场景1适用情况包括:列多用于单列过滤条件、两表join的关联条件或者出现
在select语句的投影列、group by以及order by涉及的列;
场景2:当业务中较多的SQL中涉及表的列总数相对较多时,将涉及相关列指定为行存
储格式,其中,场景2的适用情况包括:select*大量列或者投影列、group by以及order by
涉及大量列且SQL中还包含单列过滤条件或多表关联;
场景3:当SQL中存在部分列同时应用于上述场景1和场景2,则将涉及的相关列同时指
定为行存储格式和列存储格式;
其中,权重计算规则设定为:
S1、初始设置表的每一列的列存储权重对象col_weight=0以及行存储权重对象row_
weight=0;
S2、当列出现场景1的“单列过滤条件或者两表join的关联条件”时,设置列权重col_
weight+=COL_HIGHT_WEIGHT;
S3、当列出现在场景1的“投影列、group by以及order by涉及的列”时,如果每个算子
中出现的列数量<=COL_MIN,则设置列权重col_weight+=COL_HIGHT_WEIGHT;
S4、如果不满足S2~S3情况但是算子中出现的列数<=COL_MAX且小于表总列数的COL_
PERCENT,则设置列权重col_weight+=COL_LOW_WEIGHT;
S5、当出现在场景2的“投影列、group by以及order by涉及的列”中,且算子中涉及的
列数>ROW_MIN或者占 表总列数>=ROW_PERCENT时 ,则设置行权重row_weight+=ROW_
HIGHT_WEIGHT;
S6、如果不满上述S2、S3、S4、S5所有情况时,设置行权重row_weight+=ROW_LOW_
WEIGHT;
S7、存储类型规则根据权重进行分别设置,
具体过程为:
A、当某一列的col_weight>=COL_STORAGE_WEIGHT,设置该列为列存存储格式;
B、当某一列的row_weight>=ROW_STORAGE_WEIGHT,设置该列为行存存储格式;
C、同时满足A和B两种情况时,则对该列同时在行存和列存中存储;
D、当不满足条件A、B、C时,则该列使用列存默认存储类型。
2.根据权利要求1所述的数据库中数据混合存储动态调整方法,其特征在于,通过人工
根据统计信息对行存储和列存储进行创建、更改、删除。
3 .基于权利要求1所述的数据库中数据混合存储动态方法的应用方法,其特征在于具
体过程为:
1)初始状态时,业务涉及表中列的存储属性默认为列存储,同时支持建表时指定部分
列为行存或行列冗余存储;
2)根据权重计算规则进行统计,其中,col_weight和row_weight统计信息是在一个完
整的业务周期内进行统计评估,根据统计时间的不同 ,调整COL_STORAGE_WEIGHT和ROW_
STORAGE_WEIGHT参数;
权 利 要 求 书
1/2 页
2
评论