700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 浅谈达梦数据库分区表

浅谈达梦数据库分区表

时间:2021-07-31 02:37:27

相关推荐

浅谈达梦数据库分区表

分区表的优点:

1、改善了查询性能

2、增加了可用性

3、维护方便

4、均衡 I/O

分区表的类型

垂直分区:子表上的列是主表上列的子集,应用场景较少(这里不做详细说明)。

水平分区:子表跟主表具有相同的逻辑结构,即分区子表与分区主表有相同的列定义和约束定义。

水平分区类型:范围分区,列表分区,哈希分区,间隔分区

范围分区:

要求:分区列是数字或是日期类型。

CREATE table TAB_RANGE(ID INT, NAME VARCHAR(20))

PARTITION BY RANGE(ID)

(PARTITION P1 VALUES LESS THAN (100),

PARTITION P2 VALUES LESS THAN (200),

PARTITION P3 VALUES LESS THAN (300));

列表分区:

分区列适合字符串类型

CREATE TABLE TAB_LIST(

SALES_ID INT,

SALEMAN VARCHAR(20),

SALEDATE DATETIME,

CITY CHAR(10))

PARTITION BY LIST(CITY)

(PARTITION P1 VALUES ('北京','天津'),

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

PARTITION P3 VALUES ('武汉','长沙'),

PARTITION P4 VALUES ('广州','深圳'),

PARTITION PN VALUES (DEFAULT));

Hash 分区:

HASH存数据非常快,取数据慢,数据平均分配各个子分区。

如果 hash 分区不指定分区表名,那就通过指定哈希的分区数来创建,分区表名统一使用 DMHASHPART+分区号(从 0 开始)作为分区名。

CREATE TABLE TAB_HASH(ID INT) PARTITION BY HASH (ID)

PARTITIONS 10;

间隔分区:

实际上是范围分区的一个扩展

CREATE TABLE TAB_INTERVAL(

EMPLOYEE_ID NUMBER,

EMPLOYEE_NAME VARCHAR(20),

BIRTHDAY DATE)

PARTITION BY RANGE(BIRTHDAY)

INTERVAL(NUMTOYMINTERVAL(1,'YEAR')) --间隔分区函数

(PARTITION P1990 VALUES LESS

THAN(TO_DATE('1991-01-01','YYYY-MM-DD')),

PARTITION P1991 VALUES LESS THAN(TO_DATE('1992-01-01','YYYY-MM-DD')));

这里需要使用建个分区函数:

Numtoyminterval(n,interval_unit)

n:数据类型

interval_unit:year,month

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

分区表的维护

数据字典:DBA_TAB_PARTITIONS

可以通过该视图查询分区表的信息

1、增加分区

ALTER TABLE TAB_RANGE ADD PARTITION PN VALUES LESS THAN(MAXVALUE);

2、删除分区

ALTER TABLE TAB_RANGE DROP PARTITION PN;

3、合并分区

ALTER TABLE TAB_RANGE MERGE PARTITIONS P1,P2 INTO PARTITION P1_2;

4、拆分分区

ALTER TABLE TAB_RANGE SPLIT PARTITION P1_2 AT (100) INTO (PARTITION P1,PARTITION P2);

5、互换分区

ALTER TABLE TAB_RANGE EXCHANGE PARTITION P1 WITH TABLE TAB_TEST;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。