一、间隔分区介绍
在创建范围分区表时,可通过 "INTERVAL <间隔表达式>" 子句将该范围分区表指定为间隔分区表。
当对间隔分区表中的数据进行插入或更新操作时,若新的数据无法匹配现有的分区子表,则系统将自动以用户指定的现有分区的末尾临界值为起始值,以<间隔表达式>
指定的值为间隔值创建一个可以匹配新数据的间隔分区。
用户可通过查看系统表SYSHPARTTABLEINFO 来获取新建分区的分区表 ID 以及分区名等信息。该功能可方便数据库管理员对分区表的管理。
二、间隔分区表的限制说明
1) 仅支持一级范围分区创建间隔分区;
2) 只能有一个分区列,且分区列类型为日期或数值;
3) 对间隔分区进行 SPLIT,只能在间隔范围内进行操作;
4) 被 SPLIT/MERGE 的分区,其左侧分区不再进行自动创建;
5) 不相邻的间隔的分区,不能 MERGE;
6) 表定义不能包含 MAXVALUE 分区;
7) 不允许新增分区;
8) 不能删除起始间隔分区;
9) 间隔分区表定义语句显示到起始间隔分区为止;
10) 自动生成的间隔分区,均不包含边界值;
11) 间 隔 表 达 式 只 能 为 常 量 或 日 期 间 隔 函 数 。 日 期 间 隔 函 数 为 :
NUMTOYMINTERVAL、NUMTODSINTERVAL;数值常量可以为整型、DEC 类
型;
三、年月日间隔分区创建语法举例:
----按年创建间隔分区
CREATE TABLE "TEST_PART_YEAR"
(
"NAME" CHAR(15),
"TIME" DATETIME(6))
PARTITION BY RANGE("TIME")
INTERVAL( NUMTOYMINTERVAL(1,'YEAR'))
(
PARTITION "P1" VALUES LESS THAN(DATETIME'2010-04-01 00:00:00') STORAGE(ON "MAIN", CLUSTERBTR) ,
PARTITION "P2" VALUES LESS THAN(DATETIME'2010-07-01 00:00:00') STORAGE(ON "MAIN", CLUSTERBTR) ,
PARTITION "P3" VALUES LESS THAN(DATETIME'2010-10-01 00:00:00') STORAGE(ON "MAIN", CLUSTERBTR)
) STORAGE(ON "MAIN", CLUSTERBTR) ;
----按月创建间隔分区
CREATE TABLE "TEST_PART_MON"
(
"NAME" CHAR(15),
"TIME" DATETIME(6))
PARTITION BY RANGE("TIME")
INTERVAL( NUMTOYMINTERVAL(1,'YEAR'))
(
PARTITION "P1" VALUES LESS THAN(DATETIME'2010-04-01 00:00:00') STORAGE(ON "MAIN", CLUSTERBTR) ,
PARTITION "P2" VALUES LESS THAN(DATETIME'2010-07-01 00:00:00') STORAGE(ON "MAIN", CLUSTERBTR) ,
PARTITION "P3" VALUES LESS THAN(DATETIME'2010-10-01 00:00:00') STORAGE(ON "MAIN", CLUSTERBTR)
) STORAGE(ON "MAIN", CLUSTERBTR) ;
----按天创建间隔分区
CREATE TABLE "TEST_PART_DAY"
(
"NAME" CHAR(15),
"TIME" DATETIME(6))
PARTITION BY RANGE("TIME")
INTERVAL(NUMTODSINTERVAL(1, 'DAY'))
(
PARTITION "P1" VALUES LESS THAN(DATETIME'2010-04-01 00:00:00') STORAGE(ON "MAIN", CLUSTERBTR) ,
PARTITION "P2" VALUES LESS THAN(DATETIME'2010-07-01 00:00:00') STORAGE(ON "MAIN", CLUSTERBTR) ,
PARTITION "P3" VALUES LESS THAN(DATETIME'2010-10-01 00:00:00') STORAGE(ON "MAIN", CLUSTERBTR)
) STORAGE(ON "MAIN", CLUSTERBTR) ;