KADB 是北京人大金仓信息技术股份有限公司基于开源的greenplum数据库研发的一款分布式关系型数据库,全称是KingbaseAnalyticsDataBase。
分区表在KADB中一种重要的功能,一种好的分区策略可以通过只读取满足查询所需的分区来降低被扫描的数据量。每个分区在每一个计算节点上都是一个单独的物理文件或文件集合(这种情况出现在列寸表上)。就像在 宽列存表中读取一整行比从堆表读取同一行需要更多时间一样,在分区表中读取所有分区比从非分区表中读取相同 的数据要求更多的时间。同时KADB还可以利用分区表来创建行列混合存储的表,不同的分区使用不同的存储方式,还可以利用分区表来做冷热数据的压缩存储,提高查询速度的同时有效的利用的存储空间。总之利用好分区表对整个数据库系统来说都会有一定的提升。
KADB支持多种分区策略:支持rang和list以及两者混合的分区选项,无限制子分区层级数量。
rang分区键只能有一个,适用于时间、数字范围的分区
list可以有多个分区键,适用于字符值的分区。
- 创建一个rang分区表
CREATE TABLE t10 (
ID INT,
DATE DATE,
amt DECIMAL (10, 2)
) DISTRIBUTED BY (ID) PARTITION BY RANGE (DATE)(
PARTITION Jan21 START (DATE '2021-01-01') INCLUSIVE,
PARTITION Feb21 START (DATE '2021-02-01') INCLUSIVE,
PARTITION Mar21 START (DATE '2021-03-01') INCLUSIVE,
PARTITION Apr21 START (DATE '2021-04-01') INCLUSIVE,
PARTITION May21 START (DATE '2021-05-01') INCLUSIVE,
PARTITION Jun21 START (DATE '2021-06-01') INCLUSIVE,
PARTITION Jul21 START (DATE '2021-07-01') INCLUSIVE,
PARTITION Aug21 START (DATE '2021-08-01') INCLUSIVE,
PARTITION Sep21 START (DATE '2021-09-01') INCLUSIVE,
PARTITION Oct21 START (DATE '2021-10-01') INCLUSIVE,
PARTITION Nov21 START (DATE '2021-11-01') INCLUSIVE,
PARTITION Dec21 START (DATE '2021-12-01') INCLUSIVE END (DATE '2022-01-01') EXCLUSIVE
);
也可以是用every的方式快速创建分区
CREATE TABLE t11 (
ID INT,
DATE DATE,
amt DECIMAL (10, 2)
) DISTRIBUTED BY (ID) PARTITION BY RANGE (DATE)
(start (date '2021-01-01') end (date '2022-01-01') every (interval '1 month')
)
使用every会根据interval 中定义的跨越基数来自动创建分区, every 中interval 后的参数可以是 day 、 month、year 等根据需求来确定间隔,创建出的分区表命名时按照数字增量来命的,也可以使用关键字来定义分区表的名字。
CREATE TABLE t12 (
ID INT,
DATE DATE,
amt DECIMAL (10, 2)
) DISTRIBUTED BY (ID) PARTITION BY RANGE (DATE)
(partition test start (date '2021-01-01') end (date '2022-01-01') every (interval '2 month')
)