全部产品
Search
文档中心

PolarDB:Template Subpartisi

更新时间:Jul 02, 2025

Gunakan template subpartisi untuk mendefinisikan dan menyederhanakan spesifikasi subpartisi. Cukup definisikan deskriptor subpartisi dalam template, lalu terapkan ke setiap partisi dalam tabel. Dengan cara ini, deskriptor subpartisi dapat didefinisikan untuk beberapa partisi sekaligus.

Catatan

  • Jika deskriptor subpartisi tidak ditentukan untuk sebuah partisi, sistem akan menggunakan template subpartisi secara otomatis.
  • Jika deskriptor subpartisi telah ditentukan untuk sebuah partisi, sistem akan menggunakan deskriptor tersebut secara otomatis.
  • Jika deskriptor subpartisi tidak ditentukan untuk sebuah partisi dan tidak ada template subpartisi yang tersedia, sistem akan membuat subpartisi default secara otomatis.
  • Jika nama subpartisi telah ditentukan dalam template subpartisi, subpartisi yang dibuat berdasarkan template ini akan diberi nama dalam format "nama_partisi_nama_template_subpartisi". Sebagai contoh, jika nama partisi adalah parta dan nama template subpartisi adalah subpartb, maka nama subpartisi adalah parta_subpartb.

Sintaksis

  • Buat template subpartisi umum.
    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]...);
  • Buat template subpartisi yang berlaku untuk subpartisi hash.
    CREATE TABLE  table_definition PARTITION BY hash/range/list (column[, column ]...)
    SUBPARTITION BY hash(column[, column ]...)
    SUBPARTITION TEMPLATE num
    (table_partition[, table_partition]...);
  • Buat template subpartisi yang berlaku untuk partisi hash dan subpartisi.
    CREATE TABLE  table_definition PARTITION BY hash (column[, column ]...)
    SUBPARTITION BY hash(column[, column ]...)  PARTITIONS num SUBPARTITIONS num;
  • Modifikasi template subpartisi umum.
    ALTER TABLE  table_definition SUBPARTITION TEMPLATE (subpartition[, subpartition], ...)
  • Modifikasi template subpartisi yang berlaku untuk subpartisi hash.
    ALTER TABLE  table_definition SUBPARTITION TEMPLATE number
  • Hapus template subpartisi.
    ALTER TABLE  table_definition SUBPARTITION TEMPLATE ()

Contoh

  • Buat template subpartisi umum.
    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'))
    );
  • Buat template subpartisi yang berlaku untuk subpartisi 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)
        );
  • Buat template subpartisi yang berlaku untuk partisi hash dan subpartisi.
    CREATE TABLE hash_sub_template (deptno NUMBER, empname VARCHAR(32), grade NUMBER)
         PARTITION BY HASH(deptno) SUBPARTITION BY HASH(empname) PARTITIONS 4 SUBPARTITIONS 3;
  • Modifikasi template subpartisi umum.
    ALTER TABLE  hash_sub_template SET SUBPARTITION TEMPLATE
    (SUBPARTITION a1,
              SUBPARTITION b1,
              SUBPARTITION c1,
              SUBPARTITION d1);
  • Modifikasi template subpartisi yang berlaku untuk subpartisi hash.
    ALTER TABLE  hash_sub_template SET SUBPARTITION TEMPLATE 3;