注册
范围分区的间隔分区应用
技术分享/ 文章详情 /

范围分区的间隔分区应用

2022年的橘子 2023/02/22 1854 2 0

DM 支持的分区类型
范围分区:对表中的某些列上值的范围进行分区,根据某个值的范围,决定将该数据存储在哪个分区上;
哈希分区:通过指定分区编号来均匀分布数据的一种分区类型,通过在 I/O 设备上进行散列分区,使得这些分区大小基本一致;
列表分区:通过指定表中的某个列的离散值集,来确定应当存储在一起的数据。例如,可以对表上的 status 列的值在(‘A’,‘H’,‘O’)放在一个分区,值在(‘B’,‘I’,‘P’)放在另一个分区,以此类推;
组合(多级)分区:按上述三种分区方法进行任意组合,将表进行多次分区,称为多级分区表。
间隔分区(属于范围分区):在创建范围分区表时,可通过 INTERVAL <间隔表达式> 子句将该范围分区表指定为间隔分区表。当对间隔分区表中的数据进行插入或更新操作时,若新的数据无法匹配现有的分区子表,则系统将自动以用户指定的现有分区的末尾临界值为起始值,以 < 间隔表达式 > 指定的值为间隔值创建一个可以匹配新数据的间隔分区。

在达梦中我们也可以使用间隔分区,这边简单介绍和进行demo测试列举。

建测试范围分区表

drop if exsits table dmtest ;
create table dmtest(
c1 TIMESTAMP(6) not null,
c2 varchar2(10))partition by range(c1)
interval(numtodsinterval(1,‘DAY’))
(
partition p1 values less than (‘2023-02-21’)
) enable row movement;

说明:
–按天创建分区,使用NUMTOYMINTERVAL函数
–enable row movement 打开行迁移,允许更新后数据发生跨分区的移动。

插入测试数据
insert into dmtest(c1,c2) values(‘2023-02-20’,1);
insert into dmtest(c1,c2) values(‘2023-02-21’,1);
insert into dmtest(c1,c2) values(‘2023-02-22’,1);
insert into dmtest(c1,c2) values(‘2023-02-23’,1);
insert into dmtest(c1,c2) values(‘2023-02-24’,1);
insert into dmtest(c1,c2) values(‘2023-02-25’,1);
insert into dmtest(c1,c2) values(‘2023-02-26’,1);
insert into dmtest(c1,c2) values(‘2023-02-27’,1);
insert into dmtest(c1,c2) values(‘2023-02-28’,1);
commit ;

select * from sysdba.dmtest --验证结果

C1 C2
2023-02-20 1
2023-02-21 1
2023-02-22 1
2023-02-23 1
2023-02-24 1
2023-02-25 1
2023-02-26 1
2023-02-27 1
2023-02-28 1

对分区子表进行再次查看
select name from sysobjects t where name like ‘DMTEST%’

DMTEST
DMTEST_P1
DMTEST_SYS_P1221_1223
DMTEST_SYS_P1221_1225
DMTEST_SYS_P1221_1227
DMTEST_SYS_P1221_1229
DMTEST_SYS_P1221_1231
DMTEST_SYS_P1221_1233
DMTEST_SYS_P1221_1235
DMTEST_SYS_P1221_1237

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服