規約分區用于減少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)
文檔內容是否對您有幫助?