在 DB2 for Z/OS 中创建表分区

Posted

技术标签:

【中文标题】在 DB2 for Z/OS 中创建表分区【英文标题】:Creating table partitions in DB2 for Z/OS 【发布时间】:2018-08-06 09:40:56 【问题描述】:

我们可以创建一个范围分区的表,其中分区键不按顺序排列吗? 例如。

PARTITION 00001 ENDING AT ('2018-07-02') INCLUSIVE 

PARTITION 00002 ENDING AT ('2018-07-03') INCLUSIVE 

PARTITION 00003 ENDING AT ('2018-07-08') INCLUSIVE 

PARTITION 00004 ENDING AT ('2018-07-05') INCLUSIVE 

PARTITION 00005 ENDING AT ('2018-07-20') INCLUSIVE

这是在 DB2 中创建分区表的有效 DDL 吗?

【问题讨论】:

【参考方案1】:

不,分区必须“按顺序”。 See here 了解更多详情(搜索 partition-element)。我已经突出显示了相关部分。

键值遵循以下规则:

第一个值对应键的第一列,第二个值对应第二列,以此类推。使用的值少于 键中的列与使用最高的具有相同的效果 或省略列的最低值,具体取决于它们是否 是升序还是降序。

任意一个分区的key的最高值必须低于下一个分区的key的最高值才能升序 案例。

强制执行为最后一个分区指定的值。为最后一个分区指定的值是键的最大值 可以放在桌子上。任何大于该值的键值 为最后一个分区指定的超出范围。

如果所有值的串联超过 255 个字节,则仅考虑前 255 个字节。

如果键包含 ROWID 列或具有基于 ROWID 数据类型的不同类型的列,则为 17 个字节的常量 考虑为相应的 ROWID 列指定。

如果为分区键指定了空值并且键是升序的,则返回错误,除非指定了 MAXVALUE。如果 键正在下降,除非 MINVALUE 是,否则返回错误 指定。

【讨论】:

非常感谢!

以上是关于在 DB2 for Z/OS 中创建表分区的主要内容,如果未能解决你的问题,请参考以下文章

在 DB2 sql for z/os 中用 0 填充 smallint

怎么在mysql表中创建分区表

如何在 DB2 for Z/OS 中返回系统日期或日期时间?

DB2 for z/OS:CURSOR FOR UPDATE 锁定行为

快速找出DB2分区键设置不正确的表

DB2 v8 for z/OS 中的交叉连接