DWS存储分区表

网友投稿 1407 2022-05-29

一、什么是分区表

GaussDB(DWS)数据库支持的分区表为范围分区表。范围分区表即为将数据基于范围映射到每一个分区,这个范围是由创建分区表时指定的分区键决定的。这种分区方式是最为常用的,并且分区键经常采用日期,例如将销售数据按照月份进行分区。同时普通表无法转换为分区表,只能通过创建新的分区表将普通表中的数据导入到分区表中。所以需要根据业务提前规划是否使用分区表。

二、分区表的优势

分区表相比较普通表的优势十分显著,主要包括一些几个方面。

改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,很大程度上提高检索效率。

增强可用性:如果分区表的某个分区出现故障,表在其他分区的数据仍然可用。

方便维护:如果分区表的某个分区出现故障,需要修复数据,只修复该分区即可。

均衡I/O:可以把不同的分区映射到不同的磁盘以平衡I/O,改善整个系统性能。

三、分区表操作

CREATE TABLE staffS_p1

(

staff_ID       NUMBER(6) not null,

FIRST_NAME     VARCHAR2(20),

LAST_NAME      VARCHAR2(25),

EMAIL          VARCHAR2(25),

PHONE_NUMBER   VARCHAR2(20),

HIRE_DATE      DATE,

employment_ID  VARCHAR2(10),

SALARY         NUMBER(8,2),

COMMISSION_PCT NUMBER(4,2),

MANAGER_ID     NUMBER(6),

section_ID     NUMBER(4)

)

PARTITION BY RANGE (HIRE_DATE)

(

PARTITION HIRE_19950501 VALUES LESS THAN ('1995-05-01 00:00:00'),

PARTITION HIRE_19950502 VALUES LESS THAN ('1995-05-02 00:00:00'),

PARTITION HIRE_maxvalue VALUES LESS THAN (MAXVALUE)

);

该表是一个典型的分区表,以时间作为分区键。

DWS存储分区表

分区表和普通表一样支持增删改查,在该基础上可以对单个分区进行查询。

Select * from staffS_p1 partition HIRE_19950502;

即可查询staffS_p1表上HIRE_19950502分区里的所有数据。

alter语法可以删除分区,同时也包括分区里的所有数据。

alter table drop partition

同时有split语法可以将一个分区分割为多个分区

alter table staffS_p1 split partition HIRE_maxvalue at('1995-05-03 00:00:00')into(partition HIRE_19950503,partition HIRE_maxvalue1);

将原来的HIRE_maxvalue分区以1995-05-03 00:00:00为切割点分割成两部分。

既然可以将一个分区分割为多个分区,就意味着也可以将多个分区合并成一个分区,通过merge into语法即可实现。

Alter table staffS_p1 merge partitions HIRE_19950501,HIRE_19950502 into partition HIRE_19950502;

将HIRE_19950501,HIRE_19950502两个分区合并成HIRE_19950502一个分区。

alter table staffS_p1 exchange partition (HIRE_19950502) with table normal_tbl;

exchange语法可以将普通表和分区表进行交换,但exchange对普通表要求比较高,有如下一些条件:

普通表和分区的列数目相同,对应列的信息严格一致,包括:列名、列的数据类型、列约束、列的Collation信息、列的存储参数、列的压缩信息等。

普通表和分区的表压缩信息严格一致。

普通表和分区的分布列信息严格一致。

普通表和分区的索引个数相同,且对应索引的信息严格一致。

普通表和分区的表约束个数相同,且对应表约束的信息严格一致。

普通表不可以是临时表和unlogged表。

交换分区的普通表和分区表必须在同一个逻辑集群或节点组(NodeGroup)中。

完成交换后,普通表和分区的数据被置换,同时普通表和分区的表空间信息被置换。此时,普通表和分区的统计信息变得不可靠,需要对普通表和分区重新执行analyze。同时需要注意的是,需要进行exchange的表的表结构在创建时就必须匹配,如果执行了ddl操作,则无法进行exchange。

以上一些分区表的语法很大程度上提高了分区表的可用性与灵活性,加强了分区表的功能,方便了用户使用。

想了解GuassDB(DWS)更多信息,欢迎微信搜索“GaussDB DWS”关注微信公众号,和您分享最新最全的PB级数仓黑科技,后台还可获取众多学习资料哦~

EI企业智能 Gauss AP 数据仓库服务 GaussDB(DWS)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【小白学习C++ 教程】九、C++中字符型、字符串和转义字符
下一篇:AIOps产品与架构浅析
相关文章