更改开始

创建按范围划分的表空间

您可以创建分区范围(PBR)表空间,根据数据值范围创建分区,并在每个分区中使用分段空间管理功能。

关于本任务

分区范围(PBR)表空间是一种通用表空间(UTS),其分区基于数据值范围。 它为单个表存储数据页,并在每个分区内具备分段空间管理能力。

小贴士建议使用具有相对页码(RPN)的按范围分区(PBR)表空间来替代已废弃的分区(非 UTS)表空间。

在PBR表空间中,分区基于为特定数据列定义的边界值。 例如,下图展示了具有两个分区的表的数据页。

图 1。 分区范围表空间中的页
开始图描述。 该图展示了一个分区表空间,其中每个分区包含表的一部分。 结束图描述。
提示: 如果表没有合适的分区方案,可以考虑在分区键中创建一个隐式隐藏的 ROWID 列。 分区键中的任何 ROWID 列都能确保数据在分区中均匀分布,隐式隐藏的 ROWID 列对应用程序也是透明的。

每个分区可以同时运行实用程序和SQL语句。 例如,一个实用程序可以处理部分数据,同时允许其他应用程序访问其他分区上的数据。 这样,多个并发实用程序可以同时加载表空间的所有分区。 因为您可以处理部分数据,所以对数据进行某些操作所需的时间可能会更少。 此外,您可以使用单独的任务进行批量更新、删除或插入操作,而不是使用一个大型任务;每个较小的任务可以在不同的分区上运行。 将大任务分解为几个同时进行的小任务,可以缩短整个任务所需的时间。

您可以在PBR空间中的表格上创建任何类型的索引。

相对和绝对页码编号

PBR表格空间可以使用相对页面编号(RPN)或绝对页面编号。 采用相对页编号(RPN)的PBR表空间支持比采用绝对页编号的PBR表空间更大的分区尺寸,并为分区扩展提供了更大的灵活性。 PBR表空间采用相对页面编号,支持分区以任何千兆字节数增长,而不是将分区增长限制为以2的幂次增长的千兆字节数。 单个分区的数据量也可以通过立即执行ALTER命令来增加,而无需执行REORG命令。

提示: 为获得最佳效果,请为PBR表空间使用相对页编号(RPN)。 RPN支持更大的分区,并为分区扩展提供了更大的灵活性。 绝对页编号在PBR表空间中已弃用。

CREATE TABLE 或 CREATE TABLESPACE 语句中的 PAGENUM 选项用于指定表空间 Db2 所采用的页编号类型。 若省略 PAGENUM 子句, Db2 则使用为 PAGESET_PAGENUM 子系统参数指定的值。 参见页面设置页码字段(PAGESET_PAGENUM 子系统参数)

过程

要创建分区表空间,请使用以下方法之一:

  • 发出CREATE TABLE语句并指定PARTITION BY RANGE子句。
    以下示例创建一个表,该表基于 ACCTNUM 列中的数据值范围进行分区,该列位于隐式创建的 PBR 表空间中:
    CREATE TABLE TB01 (                     
       ACCT_NUM         INTEGER,            
       CUST_LAST_NM     CHAR(15),           
       LAST_ACTIVITY_DT VARCHAR(25),        
       COL2             CHAR(10),           
       COL3             CHAR(25),           
       COL4             CHAR(25),           
       COL5             CHAR(25),           
       COL6             CHAR(55),           
       STATE            CHAR(55))           
     IN DBB.TS01                            
                                            
      PARTITION BY RANGE (ACCT_NUM)               
       (PARTITION 1 ENDING AT (199),        
        PARTITION 2 ENDING AT (299),        
        PARTITION 3 ENDING AT (399),        
        PARTITION 4 ENDING AT (MAXVALUE));
  • 更改开始执行一个CREATE TABLESPACE语句,该语句指定了NUMPARTS子句,但省略了MAXPARTITIONS子句。更改结束
    以下示例使用存储组 DSN8G120 在数据库 DSN8D12A 中创建一个按范围分区的表空间 TS1。 表格空间每段有16页,共55个分区。
    CREATE TABLESPACE TS1
         IN DSN8D12A
         USING STOGROUP DSN8G120
         NUMPARTS 55
         SEGSIZE 16
         LOCKSIZE ANY;   
  • 更改开始要在PBR表空间中创建没有自然适配分区方案的表时,请考虑在分区键中隐式添加隐藏的ROWID列来创建该表。
    分区键中的ROWID列可确保数据在各分区之间均匀分布。 对于应用程序而言,隐含隐藏的 ROWID 列也可以是透明的。

    例如,以下CREATE TABLE语句在PBR表空间中创建了 TB02 表,该表有16个分区,基于隐式隐藏的名为ROW_ID的ROWID列。

    CREATE TABLE TB02 ( 
       CLIENT VARGRAPHIC(3) NOT NULL,
       WI_ID VARGRAPHIC(12) NOT NULL,
       LENGTH SMALLINT, 
       DATA VARCHAR(1000),
       ROW_ID ROWID NOT NULL
       IMPLICITLY HIDDEN GENERATED ALWAYS)
                                           
      PARTITION BY (ROW_ID)
       (PARTITION 1 ENDING AT (X'0FFF'),
        PARTITION 2 ENDING AT (X'1FFF'),
        PARTITION 3 ENDING AT (X'2FFF'),
        PARTITION 4 ENDING AT (X'3FFF'),
        PARTITION 5 ENDING AT (X'4FFF'),
        PARTITION 6 ENDING AT (X'5FFF'),
        PARTITION 7 ENDING AT (X'6FFF'),
        PARTITION 8 ENDING AT (X'7FFF'),
        PARTITION 9 ENDING AT (X'8FFF'),
        PARTITION 10 ENDING AT (X'9FFF'),
        PARTITION 11 ENDING AT (X'AFFF'),
        PARTITION 12 ENDING AT (X'BFFF'),
        PARTITION 13 ENDING AT (X'CFFF'),
        PARTITION 14 ENDING AT (X'DFFF'),
        PARTITION 15 ENDING AT (X'EFFF'),
        PARTITION 16 ENDING AT (MAXVALUE))
     CCSID UNICODE;
    更改结束
更改结束