达梦数据库DM8学习----创建分区表

操作系统:中标麒麟高级服务器操作系统软件V7.0U6

部署虚拟机:VMware® Workstation 12 Pro

DM8安装包:培训试用版

DM8安装路径:/dm8

DM8用户:dmdba:dinstall

数据库实例名:DMSERVER

已新建用户:DMTEST


本文介绍使用达梦管理工具创建分区表。

达梦数据库提供了垂直分区和水平分区两种类型的分区表,本文主要介绍水平分区表。

水平分区表有以下四种类型:

范围分区:分区列是数字或日期类型。例1,数据表中某列是年龄,范围为0~120,那么可以按年龄分区,设置不同年龄的数据在不同子表中。例2,数据表中某列是年,范围为’1900-01-01’~最新,那么可以设置不同时期的数据在不同的子表中。

列表分区:分区列是字符串类型。例如:数据表中某列是地区,如,北京、上海、广州、深圳等,那么可以设置不同地区的数据在不同的子表中。

哈希分区:分区列没有限制。当列的值没有合适的分类条件时,建议使用。哈希分区是通过指定分区编号来均匀分布数据的一种分区类型,因为通过在I/O 设备上进行散列分区,使得这些分区大小一致。

间隔分区:实际上是范围分区的一个扩展。以一个区间分区表为“起点”,并在定义中增加了一个规则(即间隔),使数据库知道将来如何增加分区,在数据插入的时候,如果没有适合该数据的分区,数据库会自动创建一个新的分区。

组合分区:也称为多级分区表。如果一次分区不能精确地对数据分类,则可以进行多级分区。达梦最多支持八级多级分区。


应启动达梦管理工具,并连接数据库实例。(具体操作请查询其他博文)

新建表操作:

创建用户DMTEST后,默认生成了同名的模式。

选择模式下的DMTEST,右键,选择新建表,开始新建分区表。

弹出新建表对话框,设置表名,和列。

以下将新建5个表,来分别介绍分区表设置:

SALES1:范围分区

SALES2:列表分区

SALES3:哈希分区

SALES4:间隔分区

SALES5:组合分区


1、分区表设置----范围分区

新建表切换到分区,选择创建为分区表,分区类型选择水平分区。如下图:

1.1、添加分区,选择列

点击添加分区按钮,弹出新建分区对话框。

分区类型选择范围分区,选择列,勾选SALE_DATE列,然后点击确定按钮,

1.2、添加分区项

点击添加分区项按钮,切换到设置分区项页签。

可修改分区名,也可使用默认分区名。

PART_1表达式设置格式:’2000-01-01’,即2000年1月1日前的数据都存放在PART_1分区表中;

PART_2表达式设置格式:’2010-01-01’,即2000年1月1日和2010年1月1日之间的数据存放在PART_2分区表中;

PART_MAX表达式设置格式:MAXVALUE,即2010年1月1日之后的数据都存放在PART_MAX分区表中。


1.3、查看DDL语句

create table"DMTEST"."SALES"

(

"PKID" INTEGER not null ,

"NAME" VARCHAR(50),

"SALE_DATE" DATE not null ,

"ACCOUNT" INTEGER,

"REGION" VARCHAR(20) not null ,

primary key("PKID","SALE_DATE")

)

PARTITION BY RANGE ("SALE_DATE") 

(

PARTITION"PART_1" VALUES LESS THAN ('2001-01-01') STORAGEinitial1, next1, minextents1, fillfactor0, on"DMTEST01"), 

PARTITION"PART_2" VALUES LESS THAN ('2010-01-01') STORAGEinitial1, next1, minextents1, fillfactor0, on"DMTEST01"), 

PARTITION"PART_MAX" VALUES LESS THAN (MAXVALUESTORAGEinitial1, next1, minextents1, fillfactor0, on"DMTEST02")

)

storage(initial1, next1, minextents1, fillfactor0, on"DMTEST01");

1.4、新建分区表

可使用DDL语句创建分区表,也可在对话框界面创建分区表。

如下图,可以看到创建了SALES表,该表与普通表不同,有子表。


2、分区表设置----列表分区

添加分区,分区表类型选择为列表分区,分区列设置为REGION。

2.1、添加分区项

PART_1表达式设置格式:'武汉','北京','上海',即REGION列中数据为这三个地区的都存放在PART_1分区表中;

PART_2表达式设置格式:'南京','西安','成都',即REGION列中数据为这三个地区的都存放在PART_2分区表中;

PART_3表达式设置格式:DEFAULT,即REGION列中数据不为PART_1和PART_2的地区的都存放在PART_3分区表中。

如下图。

2.2、查看DDL语句

create table"DMTEST"."SALES2"

(

"PKID" CHAR(10) not null ,

"NAME" CHAR(10),

"SALE_DATE" CHAR(10) not null ,

"ACCOUNT" CHAR(10),

"REGION" CHAR(10) not null ,

primary key("PKID","REGION")

)

PARTITION BY LIST ("REGION") 

(

PARTITION"PART_1" VALUES ('武汉','北京','上海'), 

PARTITION"PART_2" VALUES ('南京','西安','成都'), 

PARTITION"PART_3" VALUES (DEFAULTSTORAGEinitial1, next1, minextents1, fillfactor0, on"DMTEST02")

)

storage(initial1, next1, minextents1, fillfactor0);

2.3、新建分区表

可使用DDL语句创建分区表,也可在对话框界面创建分区表。

3、分区表设置----哈希分区

添加分区,分区表类型选择为哈希分区,分区列设置为ACCOUNT,哈希分区数为16。

哈希分区不需要添加分区项。

3.1、查看DDL

create table"DMTEST"."SALES3"

(

"PKID" INTEGER,

"NAME" VARCHAR(50),

"SALE_DATE" DATE,

"ACCOUNT" INTEGER,

"REGION" VARCHAR(50)

)

PARTITION BY HASH ("ACCOUNT") 

 PARTITIONS 16

storage(initial1, next1, minextents1, fillfactor0);

3.2、新建分区表

可使用DDL语句创建分区表,也可在对话框界面创建分区表。

4、分区表设置----间隔分区

添加分区,分区表类型选择为范围分区,分区列设置为SALE_DATE。

间隔表达式:

按1年设置间隔:NUMTOYMINTERVAL(1,'year')

按1月设置间隔:NUMTOYMINTERVAL(1,'month')

说明:不支持按天设置间隔

如下图间隔表达式是按10年为间隔

4.1、添加分区项

PART_1表达式设置格式:’2000-01-01’,即2000年1月1日前的数据都存放在PART_1分区表中;

4.2、查看DDL

CREATE TABLE"DMTEST"."SALES4"

(

"PKID" INTEGER NOT NULL,

"NAME" VARCHAR(50),

"SALE_DATE" DATE NOT NULL,

"ACCOUNT" INTEGER,

"REGION" VARCHAR(50) NOT NULL,

CLUSTER PRIMARY KEY("PKID","SALE_DATE"))

PARTITION BY RANGE("SALE_DATE")

INTERVAL(NUMTOYMINTERVAL(10, 'YEAR'))

(

PARTITION"PART_1"  VALUES LESS THAN(DATE'2000-01-01') STORAGE(ON"DMTEST01", CLUSTERBTR

STORAGE(ON"DMTEST01", CLUSTERBTR) ;

4.3、新建分区表

可使用DDL语句创建分区表,也可在对话框界面创建分区表。

4.4、插入数据,测试是否可以按间隔自动新建分区表

INSERT INTODMTEST.SALES4 VALUES(1,'AAA','1999-05-10',20,'武汉');

INSERT INTODMTEST.SALES4 VALUES(1,'BBB','2005-05-10',30,'武汉');

INSERT INTODMTEST.SALES4 VALUES(1,'BBB','2008-05-10',30,'武汉');

INSERT INTODMTEST.SALES4 VALUES(1,'BBB','2035-05-10',50,'武汉');

COMMIT;

执行后,刷新表,可以看到自动创建了2个分区表,

PART_1分区表中数据:

自动创建分区中的数据:

间隔分区表创建成功。

5、分区表设置----组合分区

首先按照地区分区,然后再按照时间分区。

5.1、添加分区,分区表类型选择为列表分区,分区列设置为REGION。

5.2、继续添加分区

点击添加分区,分区表类型选择为范围分区,分区列设置为SALE_DATE

设置为:分区模板,如下图:

5.3、添加分区项

光标选择列表分区(“REGION”),点击添加分区项,设置分区。

5.4、查看DDL

create table"DMTEST"."SALES5"

(

"PKID" CHAR(10) not null ,

"NAME" CHAR(10),

"SALE_DATE" CHAR(10) not null ,

"ACCOUNT" CHAR(10),

"REGION" CHAR(10) not null ,

primary key("PKID","SALE_DATE","REGION")

)

PARTITION BY LIST ("REGION") 

SUBPARTITION BY RANGE ("SALE_DATE") SUBPARTITION TEMPLATE 

(

SUBPARTITION"PART_1" VALUES LESS THAN ('2000-01-01'), 

SUBPARTITION"PART_2" VALUES LESS THAN ('2010-01-01'), 

SUBPARTITION"PART_3" VALUES LESS THAN ('2020-01-01'), 

SUBPARTITION"PART_MAX" VALUES LESS THAN (MAXVALUE)

)

(

PARTITION"PART_1" VALUES ('武汉','北京','上海'), 

PARTITION"PART_2" VALUES ('南京','西安','成都'), 

PARTITION"PART_N" VALUES (DEFAULT)

)

storage(initial1, next1, minextents1, fillfactor0);

5.5、新建分区表

可使用DDL语句创建分区表,也可在对话框界面创建分区表。如下图:

5.6、插入数据,测试是否可以按间隔自动新建分区表

INSERT INTODMTEST.SALES5 VALUES(1,'AAA','1999-05-10',20,'武汉');

INSERT INTODMTEST.SALES5 VALUES(1,'BBB','2005-05-10',30,'北京');

INSERT INTODMTEST.SALES5 VALUES(1,'CCC','2008-05-10',40,'西安');

INSERT INTODMTEST.SALES5 VALUES(1,'CCC','2021-05-10',50,'西安');

INSERT INTODMTEST.SALES5 VALUES(1,'DDD','2011-05-10',60,'兰州');

INSERT INTODMTEST.SALES5 VALUES(1,'DDD','2015-05-10',70,'乌鲁木齐');

COMMIT;

查看子分区内数据,数据存储正确。

你可能感兴趣的:(达梦数据库DM8学习----创建分区表)