规约分区
规约分区用于减少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)