规约分区

规约分区用于减少HASH分区的数量。

概述

规约分区是针对于HASH分区的行为,用于减少HASH分区的数量,减少的过程中会使部分HASH分区的数据重新分布。在一致性HASH分区算法下,每次规约会固定影响两个分区的数据分布。

语法

-- drop partition
ALTER TABLE <table_name> COALESCE PARTITION <partition_name>;
-- drop a subpartition
ALTER TABLE <table_name> COALESCE SUBPARTITION <subpartition_name>;

示例

使用规约分区会将分区表中两个分区规约为一个分区。

创建分区表

CREATE TABLE hash_partitions_sales (deptno NUMBER, deptname VARCHAR(32))
     PARTITION BY HASH(deptno)
       (PARTITION p1 , PARTITION p2 ,
        PARTITION p3 , PARTITION p4 , PARTITION p5, PARTITION p6, PARTITION p7, PARTITION p8);

规约分区

ALTER table hash_partitions_sales coalesce PARTITION;

查看规约结果

SELECT * FROM all_part_tables ;

结果显示如下,分区数量从8个降到了7个。

 owner | schema |      table_name       | partitioning_type | partition_count | partitioning_key_count | def_tablespace_name | def_logging 
-------+--------+-----------------------+-------------------+-----------------+------------------------+---------------------+-------------
 P     | PUBLIC | HASH_PARTITIONS_SALES | HASH              |               7 |                      1 | DEFAULT             | YES
(1 row)