DB2 表分区

来源:互联网 发布:可以货到付款的软件 编辑:程序博客网 时间:2024/06/06 11:08
对于给定的表数据范围自动生成分区的语法是:
PARTITION BY <RANGE>   ([ColumnName] <NULLS LAST | NULLS FIRST> ,...)   (   STARTING <FROM> [Start | MINVALUE | MAXVALUE] |     STARTING <FROM> ([Start | MINVALUE | MAXVALUE] ,...)   <INCLUSIVE | EXCLUSIVE>   ENDING <AT> [End | MINVALUE | MAXVALUE] |     ENDING <AT> ([End | MINVALUE | MAXVALUE] ,...)   <INCLUSIVE | EXCLUSIVE>   EVERY <(>[Constant] <DurationLabel> <)>   ,...)

手工指定分区的语法是:

PARTITION BY <RANGE>      ([ColumnName] <NULLS LAST | NULLS FIRST> ,...)     (     <PARTITION [PartitionName]>   STARTING <FROM> [Start | MINVALUE | MAXVALUE] |     STARTING <FROM> ([Start | MINVALUE | MAXVALUE] ,...)   <INCLUSIVE | EXCLUSIVE>   ENDING <AT> [End | MINVALUE | MAXVALUE] |     ENDING <AT> ([End | MINVALUE | MAXVALUE] ,...)   <INCLUSIVE | EXCLUSIVE>     <IN [TSName]>     <INDEX IN [IndexTSName]>     <LONG IN [LongTSName]>

其中:

  • ColumnName:用名称指定一个或多个列(最多 16 列),这些列的值用来决定数据行应该存储在哪个数据分区中。(指定的列组成表的分区键 — 参见边栏 “选择表分区键”。)数据类型为LONG VARCHARLONG VARGRAPHICBLOBCLOBDBCLOBXML、基于这些数据类型的 distinct 类型和结构化数据类型的列都不能作为数据分区键的组成部分。
  • PartitionName:指定分配给要创建的数据分区的惟一名称。
  • Start:指定每个数据分区的范围下限。
  • End:指定每个数据分区的范围上限。
  • Constant:在使用语法的自动生成形式时,指定每个数据分区范围的宽度。从 STARTING FROM 值开始创建数据分区,数据分区的范围内包含指定数量的值。支持这种语法的条件是分区键由单一列组成,这一列的数据类型是数字、日期、时间或时间戳。
  • DurationLabel:如果分区键列的数据类型是日期、时间或时间戳,这个参数指定与 Constant 值相关的时间单位。这个参数的有效值是:YEARYEARSMONTHMONTHSDAYDAYSHOURHOURSMINUTEMINUTESSECONDSECONDSMICROSECONDMICROSECONDS
  • TSName:指定存储每个数据分区的表空间。
  • IndexTSName:指定存储每个数据分区的分区索引的表空间。
  • LongTSName:指定存储长列的值的表空间。

注意:尖括号 (< >) 中的参数是可选的;方括号 ([ ]) 中的参数或选项是必需的,必须提供它们;逗号后面跟着省略号 (...) 表示前面的参数可以重复出现多次。

 

 

 

CREATE TABLE DB2INST1.TEST1 (
 ID           INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1, CACHE 20) NOT NULL,
 PROPERTY_KEY VARCHAR(255),
 VALUE_STRING VARCHAR(1500),
 CONSTRAINT TEST1_PK PRIMARY KEY(ID)
)IN USERSPACE1
INDEX IN DMS_D1
 PARTITION BY RANGE(PROPERTY_KEY NULLS FIRST)
 ( STARTING  MINVALUE  ,
   STARTING  'A' INCLUSIVE ENDING 'B'  EXCLUSIVE IN DMS_D1,
   STARTING  'B' INCLUSIVE ENDING 'C'  EXCLUSIVE IN DMS_D2,
   STARTING  'a' INCLUSIVE ENDING 'b'  EXCLUSIVE IN DMS_D3,
   STARTING  'b' INCLUSIVE ENDING 'c'  EXCLUSIVE IN DMS_D4,
   ENDING MAXVALUE  );


--查看分区
  db2 describe data partitions for table DB2INST1.TEST1

  db2 describe data partitions for table DB2INST1.TEST1show detail


注意事项

1.INCLUSIVE 是>= 或<=

2.EXCLUSIVE 是> 或者<

3.如果指定分区键NULLS 的时候 需要指定 FIRST或者LAST 对应的指定最大值最小值。


可以跟踪SQL查看具体的执行计划

db2expln -d sample -user db2admin **** -f "Explan_20131120.sql" -z ; -g -output "Explan_result_20131120.txt"

 

原创粉丝点击