注册
测试达梦支持的分区方式
培训园地/ 文章详情 /

测试达梦支持的分区方式

DM_749621 2023/03/16 1121 0 0

测试内容 测试达梦支持的分区方式
特殊要求或配置 1.操作系统正常运行;
2.数据库安装成功并正常运行。
测试说明 通过不同的建表方式,测试达梦支持的分区表。
测试步骤 1.创建范围分区表;
2.创建哈希分区表;
3.创建列表水平分区表;
4.创建多级分区表。
预期结果 达梦支持范围分区表(范围分区支持maxvalue)、哈希分区表、列表水平分区表和多级分区表。
实际结果 --创建范围分区表,插入数据,并确认是否插入指定分区
CREATE TABLE rang_partition_t(
name varchar(50),
price int,
info varchar(20)
)
PARTITION BY RANGE(price)(
PARTITION p1 VALUES LESS THAN (10),
PARTITION p2 VALUES LESS THAN (50),
PARTITION p3 VALUES LESS THAN (100),
PARTITION p4 VALUES EQU OR LESS THAN (MAXVALUE)
);

insert into rang_partition_t values(‘bike’,6,‘Very Good’);
insert into rang_partition_t values(‘car’,30,‘Very Nice’);
insert into rang_partition_t values(‘tank’,99,‘Very Big’);
insert into rang_partition_t values(‘rocket’,10000,‘Very Fast’);
commit;

select * from rang_partition_t partition(p1);
select * from rang_partition_t partition(p2);
select * from rang_partition_t partition(p3);
select * from rang_partition_t partition(p4);

–创建哈希分区表
CREATE TABLE HASH_partition_t(
CITY varchar(50),
name varchar(50)
)
PARTITION BY hash(CITY)(
PARTITION p1 ,
PARTITION p2
);

insert into HASH_partition_t values(‘北京’,‘ZhangSAN’);
insert into HASH_partition_t values(‘济南’,‘LiSi’);
insert into HASH_partition_t values(‘上海’,‘WangWu’);
insert into HASH_partition_t values(‘南京’,‘ZhaoLiu’);
commit;

select * from HASH_partition_t partition(p1);
select * from HASH_partition_t partition(p2);

–创建列表分区表
CREATE TABLE list_partition_t(
CITY varchar(50),
name varchar(50)
)
PARTITION BY list(CITY)(
PARTITION p1 VALUES (‘北京’,‘天津’),
PARTITION p2 VALUES (‘济南’,‘青岛’),
PARTITION p3 VALUES (‘上海’),
PARTITION p_other values (default)
);

insert into list_partition_t values(‘北京’,‘ZhangSAN’);
insert into list_partition_t values(‘济南’,‘LiSi’);
insert into list_partition_t values(‘上海’,‘WangWu’);
insert into list_partition_t values(‘非洲’,‘ZhaoLiu’);
commit;

select * from list_partition_t partition(p1);
select * from list_partition_t partition(p2);
select * from list_partition_t partition(p3);
select * from list_partition_t partition(p_other);

–创建多级分区表,第一级:基于年级的列表分区。第二级:基于性别的列表分区。第三级:基于分数的范围分区。
CREATE TABLE list_partition_mt(
name varchar(50),
grade int check (grade in (7,8,9)),
sex char(2) check (sex in (‘男’,‘女’)),
cores int check (cores >=0 and cores<=100)
)
PARTITION BY LIST(GRADE)
SUBPARTITION BY LIST(sex) SUBPARTITION TEMPLATE(
SUBPARTITION s1 VALUES (‘男’),
SUBPARTITION s2 VALUES (‘女’)),
SUBPARTITION BY range(cores) SUBPARTITION TEMPLATE(
SUBPARTITION c1 VALUES LESS THAN (60),
SUBPARTITION c2 VALUES LESS THAN (80),
SUBPARTITION c3 VALUES EQU OR LESS THAN (100)
)
(
PARTITION P1 VALUES (7),
PARTITION P2 VALUES (8),
PARTITION P3 VALUES (9)
);

insert into list_partition_mt values(‘李华’,7,‘男’,59);
insert into list_partition_mt values(‘张三’,8,‘男’,69);
insert into list_partition_mt values(‘李四’,9,‘男’,81);
insert into list_partition_mt values(‘LALA’,7,‘女’,58);
insert into list_partition_mt values(‘HAHA’,8,‘女’,91);
insert into list_partition_mt values(‘DADA’,9,‘女’,71);
insert into list_partition_mt values(‘刘秋’,7,‘女’,75);
insert into list_partition_mt values(‘李华2’,8,‘男’,59);
insert into list_partition_mt values(‘王五’,9,‘男’,88);

第一级查询
select * from list_partition_mt partition(P1);
select * from list_partition_mt partition(P2);
select * from list_partition_mt partition(P3);

第二级查询
select * from list_partition_mt SUBPARTITION(P1_S1);

第三级查询
select * from list_partition_mt SUBPARTITION(P1_S1_C1);

结论 达梦支持范围分区表、哈希分区表、列表水平分区表和多级分区表。
备注 达梦数据库 DM 支持提供以下分区方式:

  1. 范围(range)水平分区:对表中的某些列上值的范围进行分区,根据某个值的范围,决定将该数据存储在哪个分区上;
  2. 哈希(hash)水平分区:通过指定分区编号来均匀分布数据的一种分区类型,通过在 I/O 设备上进行散列分区,使得这些分区大小基本一致;
  3. 列表(list)水平分区:通过指定表中的某个列的离散值集,来确定应当存储在一起的数据。例如,可以对表上的 status 列的值在(‘A’,‘H’,‘O’)放在一个分区,值在(‘B’,‘I’,‘P’)放在另一个分区,以此类推;
  4. 多级分区表:按上述三种分区方法进行任意组合,将表进行多次分区,称为多级分区表。
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服