达梦数据库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;

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容