建立分區是指在已有的分區表上新增一個分區。本文介紹了建立分區的文法及其樣本。
文法說明
CREATE TABLE [ IF NOT EXISTS ] table_name
PARTITION OF parent_table [ (
{ column_name [ WITH OPTIONS ] [ column_constraint [ ... ] ]
| table_constraint }
[, ... ]
) ] { FOR VALUES partition_bound_spec | DEFAULT }
[ PARTITION BY { RANGE | LIST | HASH } ( { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [, ... ] ) ]
[ WITH ( storage_parameter [= value] [, ... ] ) | WITHOUT OIDS ]
[ TABLESPACE tablespace_name ]說明
PolarDB PostgreSQL版完全相容PostgreSQL。關於建立分區表的詳細文法說明,請參考PostgreSQL文檔。
RANGE/LIST:
CREATE TABLE [ IF NOT EXISTS ] table_name PARTITION OF parent_table [ ( { column_name [ WITH OPTIONS ] [ column_constraint [ ... ] ] | table_constraint } [, ... ] ) ] { FOR VALUES partition_bound_spec | DEFAULT } [ PARTITION BY { RANGE | LIST | HASH } ( { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [, ... ] ) ] [ WITH ( storage_parameter [= value] [, ... ] ) | WITHOUT OIDS ] [ TABLESPACE tablespace_name ]HASH:
ALTER TABLE <table_name> ADD PARTITION <partition_name>;
樣本
建立分區
建立定界分割
CREATE TABLE tab_range_p1 PARTITION OF tab_range FOR VALUES FROM (minvalue) TO (100);建立列表分區
CREATE TABLE tab_list_p1 PARTITION OF tab_list FOR VALUES IN (10, 20, 30);建立雜湊分割
CREATE TABLE tab_hash_0 PARTITION OF tab_hash FOR VALUES WITH (modulus 2, remainder 0);建立多級分區
PolarDB PostgreSQL版在建立分區時,也可以將分區作為分區表再一次進行分區,不同的分區策略可以自由組合。
建立多級定界分割
CREATE TABLE tab_range_p2 PARTITION OF tab_range FOR VALUES FROM (100) TO (200) PARTITION BY List (value);建立多級列表分區
CREATE TABLE tab_list_p2 PARTITION OF tab_list FOR VALUES IN (40, 50, 60) PARTITION BY hash (value);建立多級雜湊分割
CREATE TABLE tab_hash_1 PARTITION OF tab_hash FOR VALUES WITH (modulus 2, remainder 1) PARTITION BY range (value);