文档

子分区使用模版

更新时间:

PolarDB PostgreSQL版(兼容Oracle)支持使用子分区模版在组合分区表中创建子分区。本文详细介绍了其语法和示例。

简介

PolarDB PostgreSQL版(兼容Oracle)支持使用子分区模版在组合分区表中创建子分区。子分区模版不需要为表中的每个分区指定子分区描述符,从而简化了子分区的规范。 相反,您只需要在模版中描述子分区一次,然后将该子分区模版应用于表中的每个分区。 对于interval- *复合分区表,子分区模版是定义间隔分区的子分区的唯一方法。

  • 如果分区未指定子分区描述符,系统将默认使用子分区模版来定义子分区。

  • 如果分区已指定子分区描述符,系统将默认使用该描述符定义子分区。

  • 如果分区未指定子分区描述符,也没有提供子分区模版,系统将默认创建一个默认子分区。

语法说明

创建子分区模版

CREATE TABLE  table_definition PARTITION BY hash/range/list (column[, column ]...) 
SUBPARTITION BY hash/range/list (column[, column ]...) 
SUBPARTITION TEMPLATE (subpartition[, subpartition], ...) 
(table_partition[, table_partition]...);

CREATE TABLE  table_definition PARTITION BY hash/range/list (column[, column ]...) 
SUBPARTITION BY hash(column[, column ]...) 
SUBPARTITION TEMPLATE num
(table_partition[, table_partition]...);

CREATE TABLE  table_definition PARTITION BY hash (column[, column ]...) 
SUBPARTITION BY hash(column[, column ]...)  PARTITIONS num SUBPARTITIONS num;

修改子分区模版

ALTER TABLE  table_definition SUBPARTITION TEMPLATE number;
ALTER TABLE  table_definition SUBPARTITION TEMPLATE (subpartition[, subpartition], ...)

示例

创建range类型的子分区模版

CREATE TABLE shipments
( order_id      NUMBER NOT NULL
, order_date    DATE NOT NULL
, delivery_date DATE NOT NULL
, customer_id   NUMBER NOT NULL
, sales_amount  NUMBER NOT NULL
)
PARTITION BY RANGE (order_date) SUBPARTITION BY RANGE(delivery_date)
     SUBPARTITION TEMPLATE
   (SUBPARTITION e VALUES LESS THAN (TO_DATE('15-AUG-2006','dd-MON-yyyy'))
  , SUBPARTITION a VALUES LESS THAN (TO_DATE('01-SEP-2006','dd-MON-yyyy'))
  , SUBPARTITION l VALUES LESS THAN (MAXVALUE) )
   ( PARTITION p_2006_jul VALUES LESS THAN (TO_DATE('01-AUG-2006','dd-MON-yyyy'))
, PARTITION p_2006_aug VALUES LESS THAN (TO_DATE('01-SEP-2006','dd-MON-yyyy'))
, PARTITION p_2006_sep VALUES LESS THAN (TO_DATE('01-OCT-2006','dd-MON-yyyy'))
, PARTITION p_2006_oct VALUES LESS THAN (TO_DATE('01-NOV-2006','dd-MON-yyyy'))
, PARTITION p_2006_nov VALUES LESS THAN (TO_DATE('01-DEC-2006','dd-MON-yyyy'))
, PARTITION p_2006_dec VALUES LESS THAN (TO_DATE('01-JAN-2007','dd-MON-yyyy'))
);

创建hash类型的子分区模版

CREATE TABLE emp_sub_template (deptno NUMBER, empname VARCHAR(32), grade NUMBER)
     PARTITION BY RANGE(deptno) SUBPARTITION BY HASH(empname)
     SUBPARTITION TEMPLATE  4
    (PARTITION p1 VALUES LESS THAN (1000),
     PARTITION p2 VALUES LESS THAN (2000),
     PARTITION p3 VALUES LESS THAN (6000)
    );

CREATE TABLE hash_sub_template (deptno NUMBER, empname VARCHAR(32), grade NUMBER)  
     PARTITION BY HASH(deptno) SUBPARTITION BY HASH(empname) 
     PARTITIONS 4 SUBPARTITIONS 3;

修改子分区模版

ALTER TABLE  hash_sub_template SET SUBPARTITION TEMPLATE 3;
ALTER TABLE  hash_sub_template SET SUBPARTITION TEMPLATE
(SUBPARTITION a1,
          SUBPARTITION b1,
          SUBPARTITION c1,
          SUBPARTITION d1);

查看子分区模版信息

子分区模版提供一个系统视图(DBA_SUBPARTITION_TEMPLATES)来查看分区表的子分区模版信息。

列名

描述

USER_NAME

所属用户名。

TABLE_NAME

表名。

SUBPARTITION_NAME

模版中子分区名。

SUBPARTITION_POSITION

模版中子分区位置编号,从1开始。

TABLESPACE_NAME

表空间名。

HIGH_BOUND

子分区边界上限。

查看子分区模版信息,示例如下:

SELECT * FROM DBA_SUBPARTITION_TEMPLATES;
 user_name |    table_name     | subpartition_name | subpartition_position | tablespace_name | high_bound 
-----------+-------------------+-------------------+-----------------------+-----------------+------------
 PolarDB   | EMP_SUB_TEMPLATE  |                   |                     1 | PG_DEFAULT      | 
 PolarDB   | EMP_SUB_TEMPLATE  |                   |                     2 | PG_DEFAULT      | 
 PolarDB   | EMP_SUB_TEMPLATE  |                   |                     3 | PG_DEFAULT      | 
 PolarDB   | EMP_SUB_TEMPLATE  |                   |                     4 | PG_DEFAULT      | 
 PolarDB   | HASH_SUB_TEMPLATE | A1                |                     1 | PG_DEFAULT      | 
 PolarDB   | HASH_SUB_TEMPLATE | B1                |                     2 | PG_DEFAULT      | 
 PolarDB   | HASH_SUB_TEMPLATE | C1                |                     3 | PG_DEFAULT      | 
 PolarDB   | HASH_SUB_TEMPLATE | D1                |                     4 | PG_DEFAULT      | 
(8 rows)

  • 本页导读 (0)
文档反馈