subpartition template使用

本文介绍了一种使用子分区模板简化数据库分区管理的方法。通过创建子分区模板,在添加新的主分区时,可以自动创建预定义的子分区,从而提高数据库维护效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一直以来还不知道子分区模版的东西,今天实验了下。还挺好玩,有点用途,平时维护添加分区时,不需要填写子分区了。下面是例子:

create table t_test_subtemplate
(
  rec_type         varchar2(10),
  capture_time  varchar2(30),
  uuid                 varchar2(30)
)
partition by range(capture_time)
subpartition by list(uuid)
subpartition template
(
  subpartition sp00 values('1'),
  subpartition sp01 values('2')
)
(
  partition part_201101 values less than(20130130),
  partition part_201102 values less than(20130230)
);

正常创建分区表,不过注意子分区那有个subpartition template字样,为子分区模版,之后只需要添加主分区就可以自动创建子分区了。

alter table t_test_subtemplate add partition part_201104 values less than(20130330);

看下表视图,会看到子分区

create table FZ_CJ_F_DQB (JZDM NUMBER(20) not null,JCDDM NUMBER(20) not null,SJ DATE not null,CFCS NUMBER(3) not null,FX NUMBER(3) not null,FS NUMBER(10,2) not null,FSA NUMBER(10,2) default -1,FSB NUMBER(10,2) default -1) tablespace FZ_BKJ_FYS pctfree 10 initrans 1 maxtrans 255 storage (initial 32M NEXT 16M minextents 1 maxextents unlimited) NOLOGGING partition by range (SJ) interval (numtoyminterval(2,'month')) subpartition by range(jzdm,jcddm) subpartition template (subpartition Z1 values less than (12304,20482), subpartition Z2 values less than (12320,20482), subpartition Z3 values less than (12336,20482), subpartition Z4 values less than (12352,20482), subpartition Z5 values less than (12368,20482), subpartition Z6 values less than (12384,20482), subpartition Z7 values less than (12400,20482), subpartition Z8 values less than (12416,20482), subpartition Z9 values less than (12432,20482), subpartition Z10 values less than (12544,20482), subpartition Z11 values less than (12560,20482), subpartition Z12 values less than (12576,20482), subpartition Z13 values less than (12592,20482), subpartition Z14 values less than (12608,20482), subpartition Z15 values less than (12624,20482), subpartition Z16 values less than (12640,20482), subpartition Z17 values less than (12672,20482), subpartition Z18 values less than (12688,20482), subpartition Z19 values less than (12800,20482), subpartition Z20 values less than (12816,20482), subpartition Z21 values less than (12832,20482), subpartition Z22 values less than (12848,20482), subpartition Z23 values less than (12864,20482), subpartition Z24 values less than (12880,20482), subpartition Z25 values less than (12896,20482), subpartition Z26 values less than (12912,20482), subpartition Z27 values less than (12928,20482), subpartition Z28 values less than (12944,20482), subpartition Z29 values less than (13056,20482), subpartition Z30 values less than (13072,20482), subpartition Z31 values less than (13088,20482), subpartition Z32 values less than (13104,20482), subpartition Z33 values less than (13120,20482), subpartition Z34 values less than (13136,20482), subpartition Z35 values less than (13152,20482), subpartition Z36 values less than (13200,20482), subpartition Z37 values less than (13360,20482))(partition QSFQ01 values less than (to_date('20120101','yyyymmdd')));转换成达梦数据库可执行语句
03-13
需要实现按 device_id 做64HASH 分区,再按positionTime时间做每7天一个子分区,首次创建表时先建 10 个 7 天级子分区,后续由事件自动维护每 7 天检查一次,若未来不足 10 个子分区,则一次性补齐 10 个,分析以下代码是否有语法错误,并修改: CREATE TABLE device_trajectory ( tid VARCHAR(50) NOT NULL, device_id VARCHAR(50) NOT NULL, latitude DECIMAL(10,6) NOT NULL, -- 约 16 cm 精度[^1^] longitude DECIMAL(10,6) NOT NULL, deviceAlarm VARCHAR(50), deviceAltitude DECIMAL(10,2), deviceSpeed DECIMAL(10,2), deviceDirection DECIMAL(10,2), deviceStatus TINYINT, positionTime DATETIME NOT NULL, createTime DATETIME NOT NULL, deviceDistance DECIMAL(12,2), recorderSpeed DECIMAL(10,2), remainingFuel DECIMAL(8,2), alarmConfirm TINYINT, overSpeed TINYINT, inOutArea TINYINT, travelTime INT, singleStatus VARCHAR(10), ioStatus VARCHAR(20), analogQuantity DECIMAL(10,2), networkSignalStrength TINYINT, gnssSatelliteNumber TINYINT, mainPowerVoltage DECIMAL(5,2), simIccid VARCHAR(25), -- 联合主键,便于分区裁剪 PRIMARY KEY (device_id, positionTime), -- 常用检索列索引 INDEX idx_tid (tid), INDEX idx_alarm (deviceAlarm), INDEX idx_createTime (createTime) ) PARTITION BY HASH (device_id) SUBPARTITION BY RANGE (TO_DAYS(positionTime)) ( -- 先建 10 个 7 天级子分区,后续由事件自动维护 SUBPARTITION p20240802 VALUES LESS THAN (TO_DAYS('2025-08-09')), SUBPARTITION p20240809 VALUES LESS THAN (TO_DAYS('2025-08-16')), SUBPARTITION p20240816 VALUES LESS THAN (TO_DAYS('2025-08-23')), SUBPARTITION p20240823 VALUES LESS THAN (TO_DAYS('2025-08-30')), SUBPARTITION p20240830 VALUES LESS THAN (TO_DAYS('2025-09-06')), SUBPARTITION p20240906 VALUES LESS THAN (TO_DAYS('2025-09-13')), SUBPARTITION p20240913 VALUES LESS THAN (TO_DAYS('2025-09-20')), SUBPARTITION p20240920 VALUES LESS THAN (TO_DAYS('2025-09-27')), SUBPARTITION p20240927 VALUES LESS THAN (TO_DAYS('2025-10-04')), SUBPARTITION p20241004 VALUES LESS THAN (TO_DAYS('2025-10-11')) );
最新发布
08-03
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值