注册
DM8创建范围分区表规划样例及注意事项
培训园地/ 文章详情 /

DM8创建范围分区表规划样例及注意事项

山水清音 2023/05/19 1159 0 0

1、如下样例1为创建以月为分区列的范围分区表,注意MAIN为所属表空间、分区表名为”主表名_分区名、PARTTEST_1为分区名、其它索引名,可根据现场应用需求自行调整。
CREATE TABLE "TEST"."TESTRANGE_2023"
(
"TIMETEST" TIMESTAMP(6) NOT NULL,
"DTIDTEST" VARCHAR(18) NOT NULL,
"IDTEST" VARCHAR(18) NOT NULL,
"V00" DECIMAL(16,4),
"V01" DECIMAL(16,4),
"V02" DECIMAL(16,4),
"V03" DECIMAL(16,4),
"V04" DECIMAL(16,4),
"V05" DECIMAL(16,4),
CLUSTER KEY("TIMETEST", "DTIDTEST"),
CONSTRAINT "TEST_2023_PK_01" NOT CLUSTER PRIMARY KEY("TIMETEST","IDTEST"))
PARTITION BY RANGE("TIMETEST")
(
PARTITION "PARTTEST_1" VALUES LESS THAN(DATETIME'2023-01-01 00:00:00'),
PARTITION "PARTTEST_2" VALUES LESS THAN(DATETIME'2023-02-01 00:00:00'),
PARTITION "PARTTEST_3" VALUES LESS THAN(DATETIME'2023-03-01 00:00:00'),
PARTITION "PARTTEST_4" VALUES LESS THAN(DATETIME'2023-04-01 00:00:00'),
PARTITION "PARTTEST_5" VALUES LESS THAN(DATETIME'2023-05-01 00:00:00'),
PARTITION "PARTTEST_6" VALUES LESS THAN(DATETIME'2023-06-01 00:00:00'),
PARTITION "PARTTEST_7" VALUES LESS THAN(DATETIME'2023-07-01 00:00:00'),
PARTITION "PARTTEST_8" VALUES LESS THAN(DATETIME'2023-08-01 00:00:00'),
PARTITION "PARTTEST_9" VALUES LESS THAN(DATETIME'2023-09-01 00:00:00'),
PARTITION "PARTTEST_10" VALUES LESS THAN(DATETIME'2023-10-01 00:00:00'),
PARTITION "PARTTEST_11" VALUES LESS THAN(DATETIME'2023-11-01 00:00:00'),
PARTITION "PARTTEST_12" VALUES LESS THAN(DATETIME'2023-12-01 00:00:00')
) STORAGE(ON "MAIN", CLUSTERBTR) ;

CREATE INDEX "IDX_TEST_2023_TIMETEST" ON "TEST"."TESTRANGE_2023"("IDTEST" ASC) STORAGE(ON "MAIN", CLUSTERBTR) ;
创建截图如下:
1.jpg

2、如下样例2为创建以年为分区列的范围分区表,注意MAIN为所属表空间、分区表名为”主表名_分区名”、如下"2023" 的2023为分区名、其它索引名,可根据实际应用需求自行调整。
CREATE TABLE "TEST"."TESTRANGE_YEAR"
(
"TIMETEST" TIMESTAMP(6) NOT NULL,
"DTIDTEST" VARCHAR(18) NOT NULL,
"IDTEST" VARCHAR(18) NOT NULL,
"V00" DECIMAL(16,4),
"V01" DECIMAL(16,4),
"V02" DECIMAL(16,4),
"V03" DECIMAL(16,4),
"V04" DECIMAL(16,4),
"V05" DECIMAL(16,4),
CLUSTER KEY("TIMETEST", "DTIDTEST"),
CONSTRAINT "TEST_2023_PK_02" NOT CLUSTER PRIMARY KEY("TIMETEST","IDTEST"))
PARTITION BY RANGE("TIMETEST")
(
PARTITION "2023" VALUES LESS THAN(DATETIME'2023-01-01 00:00:00'),
PARTITION "2024" VALUES LESS THAN(DATETIME'2024-01-01 00:00:00'),
PARTITION "2025" VALUES LESS THAN(DATETIME'2025-01-01 00:00:00'),
PARTITION "2026" VALUES LESS THAN(DATETIME'2026-01-01 00:00:00'),
PARTITION "2027" VALUES LESS THAN(DATETIME'2027-01-01 00:00:00'),
PARTITION "2028" VALUES LESS THAN(MAXVALUE)
) STORAGE(ON "MAIN", CLUSTERBTR) ;

CREATE INDEX "IDX_TEST_2023_Y_TIMETEST" ON "TEST"."TESTRANGE_YEAR"("IDTEST" ASC) STORAGE(ON "MAIN", CLUSTERBTR) ;
创建截图如下:
2.jpg

规划注意事项:
关于分区表是否创建maxvalue分区:
带maxvalue分区:
1.正常创建,没有警告;
2.后续不能add分区,只能split分区,而且不能延续之前的分区命名,因为紧接着的命名已经被maxvalue分区占用;
3.超出最大分区阈值的数据落到maxvalue分区中,可以正常插入;
不带maxvalue分区:
1.可以正常创建,但是带有警告:警告:范围分区未包含MAXVALUE,可能无法定位到分区;
2.后续添加分区可以直接接着最后一个分区进行add分区,分区命名很平顺;
如下为DROP和ADD分区字表截图:
3.gif4.jpg

3.超出最大分区阈值的数据无法正常插入,报错:没有找到合适的分区;
如上可根据实际应用业务需求选择其中一种方式;

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服