天天看点

达梦数据库-分区表管理

当单表过大时,查询速度会变慢,因为要扫码的数据块就会多。这样客户就会觉得系统性能有问题。对表进行分区后,逻辑上表还是一张完整的表,但是每次扫码的时候,能合理运用分区key,就能大大减少IO。

达梦数据库目前只支持水平分区表:表按照行拆分成多个分区,每个分区和主表有相同的列和约束条件。

目前水平分区主要支持4中类型

1.范围分区:对表某列上的值范围进行分区

2.哈希分区:按分区数进行散列分区,每个分区大小差不多。

3.列表分区:如果某列的值只有几个,基于这样的特点我们可以采用列表分区

4.多级分区:把上面三种分区进行任意组合,将表多次分区

1.范围分区表

1.创建范围分区时要指定默认分区,否则回因数据不能匹配分区后,而插入失败

2.创建时,可以指定不同表空间

CREATE TABLE t_range (

A INT,

B VARCHAR,

C DATETIME

)

PARTITION BY RANGE(C)

(

PARTITION P1 VALUES LESS THAN ('2021-09-01') TABLESPACE "TBS_PARTA",

PARTITION P2 VALUES LESS THAN ('2021-10-01') TABLESPACE "TBS_PARTA",

PARTITION P3 VALUES LESS THAN ('2021-11-01') TABLESPACE "TBS_PARTB",

PARTITION P4 VALUES LESS THAN ('2021-12-01') TABLESPACE "TBS_PARTB",

PARTITION P5 VALUES EQU OR LESS THAN(MAXVALUE) TABLESPACE "TBS_PARTB"

);

查看分区表信息的SQL

select table_name, partitioning_type,partition_count from all_part_tables where table_name='T_RANGE'

select table_name,partition_name,high_value from all_tab_partitions where table_name='T_RANGE';

达梦数据库-分区表管理

2.列表分区表

列表分区按列上面的值进行分区,一般用于区号,城市,国别,分散较小的数值。

创建时候,也要有默认分区

CREATE TABLE LOCATION(

A INT,

B VARCHAR2(20),

C char(10) 

)

PARTITION BY LIST(C)

(

  PARTITION P1 VALUES ('湖北','湖南') TABLESPACE "TBS_PARTA",

  PARTITION P2 VALUES ('山东','山西') TABLESPACE "TBS_PARTA",

  PARTITION P3 VALUES ('河南','河北') TABLESPACE "TBS_PARTA",

  PARTITION P4 VALUES ('北京','上海') TABLESPACE "TBS_PARTA",

  PARTITION P_DEFAULT VALUES(default)

);

达梦数据库-分区表管理

3.哈希分区表

如果表中的列值不满足范围分区和列表分区,那么就可以考虑使用哈希分区。数据库就会根据分区键的散列值将行映射到分区。是数据能均匀的分布在各个分区

CREATE TABLE MY_HASH(

A INT,

B VARCHAR2(20),

C char(10) 

)

PARTITION BY HASH(C)

(

  PARTITION P1 TABLESPACE "TBS_PARTA",

  PARTITION P2 TABLESPACE "TBS_PARTA",

  PARTITION P3 TABLESPACE "TBS_PARTA",

  PARTITION P4 TABLESPACE "TBS_PARTA"

);

达梦数据库-分区表管理

4.多级分区表

如果数据表经过一次分区后,单个子分区还是很大,就可以考虑对子分区进行再分区。如果建一个LIST-RANG分区

CREATE TABLE M_LIST(

A INT,

B VARCHAR2(20),

C VARCHAR2(40)

)

PARTITION BY LIST(B)

SUBPARTITION BY RANGE(A) SUBPARTITION TEMPLATE(

   SUBPARTITION SUB1 VALUES LESS THAN (10),

   SUBPARTITION SUB2 VALUES LESS THAN (20),

   SUBPARTITION SUB3 VALUES EQU OR LESS THAN (MAXVALUE)

)

(

PARTITION P1 VALUES ('湖北','湖南'),

PARTITION P2 VALUES ('北京','上海'),

PARTITION P3 VALUES ('山东','山西')

);

SUBPARTITION TEMPLATE 是子模板关键字,这样分区P1、P2、P3各自就有了子模板 SUB1、SUB2、SUB3

达梦数据库-分区表管理

已经就是达梦分区表的基本概念。

达梦数据库 - 新一代大型通用关系型数据库 | 达梦云适配中心达梦数据库产品体验站,DM8在线试玩,达梦数据库全系列产品免费下载,官方权威的快速上手文档和产品手册,最活跃的达梦技术社区,面向全行业ISV厂商免费的云适配服务。

达梦数据库-分区表管理

https://eco.dameng.com/