暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

人大金仓数据库KingbaseES-分区表超详细教程(四)

数据猿 2023-12-06
1306


关键字:

多列分区、人大金仓、KingbaseES

1. 多列分区的概念

常见的分区策略都是单列单键值的进行分区划分,而多列分区是一种常见的分区技术,他根据多个列来划分数据,使用多列分区可以更精确的进行数据分割,使得查询和维护更加高效。相比于使用单列分区,多列分区可以更好地满足某些特定业务场景的需求。

2. 多列分区的优势

更精确的数据分割:使用多列分区可以根据多个列的值对数据进行分割,实现更精细的数据划分,这在某些业务场景下非常重要,例如根据时间和地理位置对数据进行划分。

更好地查询性能:多列分区可以提供提供更好地查询性能,特别是当查询条件包含多个分区键的列时,由于数据已经按照多个列进行了分区,查询时可以直接跳过不符合条件的分区,降低了查询的成本。

更灵活的维护:使用多列分区可以对不同的列实施不同的维护策略。例如,可以根据不同的列的特点选择不同的数据压缩方式或索引类型,从而优化维护过程

3. 多列分区的使用

(1)创建多列分区

下面是一个基础的多列索引的案例,这里定义两个分区键值,在分区定义范围的时候就需要分别加上两个键值的范围。多列分区最多支持16列

create table range_tab79(

    col1 int,

    col2 int,

    col3 text

)partition by range(col1,col2)(

    partition p1 values less than(10,1),

    partition p2 values less than(20,3),

    partition p3 values less than(30,5),

    partition p4 values less than(40,7),

    partition p5 values less than(50,9),

    partition p6 values less than(60,11),

    partition p7 values less than(70,13),

    partition p8 values less than(80,15)

);

(1)特点一:支持分区范围值前后一致的情况

此时为分区表添加一个包含maxvalue的最大值的分区。

alter table range_tab77 add partition p10 values less than (maxvalue,maxvalue);

并将该分区进行拆分,将第一层拆分至常规数值,第二列拆分至最大值

alter table range_tab77 split partition p10 at (500,maxvalue) into (partition p11,partition p12);

拆分完如下图所示,可以看到第二列存在maxvalue到maxvalue的分区,因此,多列分区支持分区边界值相同的情况发生。

同样适用于minvalue的情况

alter table range_tab79 split partition p1 at (-1,minvalue) into (partition p1_1,partition p1_2);

此时对分区p7进行拆分,采取第一列相同,第二列不同的情况:如下图所示:

alter table range_tab79 split partition p7 at (60,12) into (partition p7_1,partition p7_2);

可以看到,此时,第一列也支持数值相同的情况。

(2)特点二:插入数值满足第一列时,后续数值就不进行考虑,直接进入第一列所在的分区

insert into range_tab79 values (75,30,'test');

此时,第一列数值满足p8分区,但是第二列并不满足p8分区,此时,数据仍会进入到p8分区。如下图所示:

同样的,当插入第一列数值相同时,就开始考虑第二列的数值进行分区数值划分。

如下图所示,首先对分区进行划分,并插入数值:

alter table range_tab79 split partition p7_2 at(60,13) into (partition p7_2a,partition p7_2b);

insert into range_tab79 values (60,11,'aa'),(60,12,'aa'),(60,13,'a');

插入后的数值分布如下图:

注:多列分区只对range类型的分区表生效

多列分区中的二级分区键值,可以和一级分区的重复

参考资料

《KingbaseES SQL语言参考手册》

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论