logo
GBase 8a
运维管理
文章

gbase常用分区表的各种操作

gbase_cyx
发表于2024-02-29 20:20:21609次浏览0个评论

分区表是根据一定规则,将数据库中的一张表分解成多个更小的容易管理的部分, 从逻辑上看,只有一张表,但底层却是由多个物理分区组成。

个人理解将一段时间的数据存于表内的分区1,下一段时间数据存于表内分区2,方便管理,相对应的会造成数据加载LOAD缓慢。

常用分区操作:

1.创建RANGE 分区

CREATE TABLE t1 ( 

a int(11) DEFAULT NULL,

b varchar(10) DEFAULT NULL 

) REPLICATED PARTITION BY RANGE (a) 

(PARTITION p0 VALUES LESS THAN (10) , 

PARTITION p1 VALUES LESS THAN (20) , 

PARTITION p2 VALUES LESS THAN (30) , 

PARTITION p3 VALUES LESS THAN (40) ) ; 

 

2.创建RANGE分区表,带hash子分区,不指定子分区名

create table t1 (id int, dt date) 

partition by range (id) 

subpartition by hash (quarter(dt)) 

subpartitions 4 

 ( 

partition p0 values less than (1990), 

partition p1 values less than (2000),

partition p2 values less than maxvalue 

);

 

3.创建RANGE分区表,带hash子分区,指定子分区名

create table t1 (id int, dt date) 

partition by range (id) 

 subpartition by hash (quarter(dt))

 ( 

 partition p0 values less than (1990) 

 ( 

 subpartition part0_一季度, 

 subpartition part0_q2, 

 subpartition part0_q3, 

 subpartition part0_q4 

 ), 

 partition p1 values less than (2000) 

 ( 

 subpartition part1_q1, 

 subpartition part1_二季度, 

 subpartition part1_q3, 

 subpartition part1_q4 

 ), 

 partition p2 values less than maxvalue 

 ( 

 subpartition part2_q1, 

 subpartition part2_q2, 

 subpartition part2_q3,

 subpartition part2_四季度 

 )  );

 

4.创建RANGE分区表,带key子分区,不指定子分区名

create table t1 (id int, dt date) 

 partition by range (id) 

 subpartition by key (dt) 

 subpartitions 4 

 (

 partition p0 values less than (1990), 

 partition p1 values less than (2000), 

 partition p2 values less than maxvalue 

 );

 

5.创建RANGE分区表,带key子分区,指定子分区名

create table t1 (id int, dt date) 

 partition by range (id) 

 subpartition by key (dt) 

 ( 

 partition p0 values less than (1990) 

 ( 

 subpartition part0_一季度, 

 subpartition part0_q2, 

 subpartition part0_q3, 

 subpartition part0_q4

 ), 

 partition p1 values less than (2000) 

 ( 

 subpartition part1_q1, 

 subpartition part1_二季度, 

 subpartition part1_q3, 

 subpartition part1_q4 

 ), 

 partition p2 values less than maxvalue 

 ( 

 subpartition part2_q1, 

 subpartition part2_q2, 

 subpartition part2_q3, 

 subpartition part2_四季度 

 )  );

 

6.根据分区名称查询数据

select * from t1 partition(p0,p2); 

 

7.添加、删除分区

alter table pt add partition(partition p2 values less than(30));

alter table pt add partition (partition p3 values less than maxvalue);

删除分区:alter table pt drop partition p1;

--删除分区会直接删除分区中的数据且无法恢复,除非先备份再删除。

--建议按照每月作为分区。

评论

登录后才可以发表评论