达梦数据库关于范围分区表及一些说明

达梦数据库分区表实际上是把一张大表,逻辑上拆分成多个小表。分散IO,方便管理

范围分区:分区列一般用数字或日期类型

1、解决分区表超出范围问题

----创建范围分区表
Create TABLE a_r1(id int,name varchar(20))
partition by RANGE(id)
(partition p1 VALUES LESS THAN (100),
PARTITION p2 VALUES LESS THAN (200)
);

在这里插入图片描述

----插入一些数据
begin
	FOR i in 1..160 LOOP
	insert into A_R1 VALUES (i,'ab'||i);
	commit;
	end LOOP;
end;

----查询a_r1和p1、p2
select count(*) from a_r1;
select count(*) from a_r1 PARTITION (p1);
select count(*) from a_r1 PARTITION (p2);
----插入一条不在该分区数据
insert into a_r1 values (230,'aaa');

在这里插入图片描述
解决办法

----查询分区表最大分区数
select  table_name,high_value,partition_name  from dba_tab_partitions where table_name='A_R1';

----增加分区
alter table a_r1 add partition pn values less than (maxvalue);

2、局部唯一索引必须包含全部分区列

创建分区表如果表中有主键列,分区列必须包含主键。

create table t_r2 (sid int primary key,id int,name varchar(20))
partition by range (id)
(partition p1 values less than (100),
partition p2 values less than (200));

在这里插入图片描述
分区表中没有主键列或唯一索引列,则可以创建。

create table t_r3 (sid int,id int,name varchar(20))
partition by range (id)
(partition p1 values less than (100),
partition p2 values less than (200));

在这里插入图片描述
另外堆表也是可以即便有主键列或唯一索引列也可以创建

----更改默认创建的表为堆表(一般不建议使用堆表)
sp_set_para_value(1,'LIST_TABLE',1);
----查询LIST_TABLE参数
select para_name,para_value,para_type from v$dm_ini t where t.para_name='LIST_TABLE';
----创建分区表
create table t_r2 (sid int primary key,id int,name varchar(20))
partition by range (id)
(partition p1 values less than (100),
partition p2 values less than (200));

在这里插入图片描述

3、水平分区堆表各子表必须位于同一个表空间

水平分区堆表必须在一个表空间中

create table t_r6 (sid int ,id int,name varchar(20),constraint t6_pri
primary key (sid))
partition by range (sid)
(partition p1 values less than (100) tablespace MAIN,
partition p2 values less than (200) tablespace tbs) storage (nobranch);

在这里插入图片描述
错误[-2757]:
水平分区堆表各子表必须位于同一个表空间

没有堆表的情况,分区表可以在不同表空间

create table t_r5 (sid int ,id int,name varchar(20),constraint t5_pri
primary key (sid))
partition by range (sid)
(partition p1 values less than (100) tablespace tbs,
partition p2 values less than (200) tablespace main);

在这里插入图片描述

4、分区表的管理

----创建分区表
create table t_r5 (sid int ,id int,name varchar(20),constraint t5_pri
primary key (sid))
partition by range (sid)
(partition p1 values less than (100) tablespace tbs1,
partition p2 values less than (200) tablespace tbs2);
----增加分区:
alter table t_r5 add partition p3 values less than (300);
----删除分区:
alter table t_r5 drop partition p3;
----合并分区:
alter table t_r5 merge partitions p2,p3 into partition p2_3;
----拆分分区:
alter table t_r5 split partition p2_3 at (200) into
(partition p2,partition p3);
----交换分区:(把第一个分区的数据交换出来)
create table test (sid int primary key,id int,name varchar(20));
alter table t_r5 exchange partition p1 with table test;
select * from t_r5 partition(p1);
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
达梦数据库可以通过以下步骤为表建立分区: 1. 创建分区表空间(Partitioned Tablespace) 使用以下语句创建分区表空间: ``` CREATE TABLESPACE partition_tablespace DATAFILE 'path_to_datafile' SIZE 10G EXTENT MANAGEMENT LOCAL UNIFORM SIZE 64M; ``` 其中,partition_tablespace为分区表空间名称,path_to_datafile为数据文件路径,SIZE指定表空间大小,EXTENT MANAGEMENT指定分区管理方式,LOCAL表示本地管理,UNIFORM SIZE指定分区大小。 2. 创建分区表(Partitioned Table) 使用以下语句创建分区表: ``` CREATE TABLE partition_table ( id NUMBER, name VARCHAR2(50), date_of_birth DATE ) PARTITION BY RANGE (date_of_birth) ( PARTITION p1 VALUES LESS THAN (TO_DATE('01-01-2000', 'DD-MM-YYYY')), PARTITION p2 VALUES LESS THAN (TO_DATE('01-01-2010', 'DD-MM-YYYY')), PARTITION p3 VALUES LESS THAN (MAXVALUE) ) TABLESPACE partition_tablespace; ``` 其中,partition_table为表名,id、name、date_of_birth为表字段,PARTITION BY指定分区方式,RANGE表示按照范围分区,date_of_birth为分区字段,p1、p2、p3为分区名称,VALUES LESS THAN指定分区的值范围,MAXVALUE表示分区的最大值,TABLESPACE指定表所使用的表空间。 3. 插入数据 使用INSERT语句向分区表中插入数据即可。 注意:在创建分区表时,必须指定所使用的分区表空间。同时,分区表分区必须是表中的某一,且该必须具有可以进行比较的数据类型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值