更新时间:2025-05-29 GMT+08:00
分区表(母表)
实际对用户体现的表,用户对该表进行常规DML语句的增、删、查、改操作。通常使用在建表DDL语句显式的使用PARTITION BY语句进行定义,创建成功以后在pg_class表中新增一个entry,并且parttype列内容为'p'(一级分区)或者's'(二级分区),表明该entry为分区表的母表。分区母表通常是一个逻辑形态,对应的表文件并不存放数据。
示例1:t1_hash为一个一级分区表,分区类型为hash:
gaussdb=# CREATE TABLE t1_hash (c1 INT, c2 INT, c3 INT)
PARTITION BY HASH(c1)
(
PARTITION p0,
PARTITION p1,
PARTITION p2,
PARTITION p3,
PARTITION p4,
PARTITION p5,
PARTITION p6,
PARTITION p7,
PARTITION p8,
PARTITION p9
);
gaussdb=# \d+ t1_hash
Table "public.t1_hash"
Column | Type | Modifiers | Storage | Stats target | Description
--------+---------+-----------+---------+--------------+-------------
c1 | integer | | plain | |
c2 | integer | | plain | |
c3 | integer | | plain | |
Partition By HASH(c1)
Number of partitions: 10 (View pg_partition to check each partition range.)
Has OIDs: no
Options: orientation=row, compression=no, storage_type=USTORE, segment=off
--查询t1_hash分区类型
gaussdb=# SELECT relname, parttype FROM pg_class WHERE relname = 't1_hash';
relname | parttype
---------+----------
t1_hash | p
(1 row)
gaussdb=# DROP TABLE t1_hash;
示例2:t1_sub_rr为一个二级分区表,分区类型为range-list:
gaussdb=# CREATE TABLE t1_sub_rr (
c1 INT,
c2 INT,
c3 INT
)
PARTITION BY RANGE (c1)
SUBPARTITION BY LIST (c2)
(
PARTITION p_2021 VALUES LESS THAN (2022) (
SUBPARTITION p_2021_1 VALUES (1),
SUBPARTITION p_2021_2 VALUES (2),
SUBPARTITION p_2021_3 VALUES (3)
),
PARTITION p_2022 VALUES LESS THAN (2023) (
SUBPARTITION p_2022_1 VALUES (1),
SUBPARTITION p_2022_2 VALUES (2),
SUBPARTITION p_2022_3 VALUES (3)
),
PARTITION p_2023 VALUES LESS THAN (2024) (
SUBPARTITION p_2023_1 VALUES (1),
SUBPARTITION p_2023_2 VALUES (2),
SUBPARTITION p_2023_3 VALUES (3)
),
PARTITION p_2024 VALUES LESS THAN (2025) (
SUBPARTITION p_2024_1 VALUES (1),
SUBPARTITION p_2024_2 VALUES (2),
SUBPARTITION p_2024_3 VALUES (3)
),
PARTITION p_2025 VALUES LESS THAN (2026) (
SUBPARTITION p_2025_1 VALUES (1),
SUBPARTITION p_2025_2 VALUES (2),
SUBPARTITION p_2025_3 VALUES (3)
),
PARTITION p_2026 VALUES LESS THAN (2027) (
SUBPARTITION p_2026_1 VALUES (1),
SUBPARTITION p_2026_2 VALUES (2),
SUBPARTITION p_2026_3 VALUES (3)
)
);
gaussdb=# \d+ t1_sub_rr
Table "public.t1_sub_rr"
Column | Type | Modifiers | Storage | Stats target | Description
--------+---------+-----------+---------+--------------+-------------
c1 | integer | | plain | |
c2 | integer | | plain | |
c3 | integer | | plain | |
Partition By RANGE(c1) Subpartition By LIST(c2)
Number of partitions: 6 (View pg_partition to check each partition range.)
Number of subpartitions: 18 (View pg_partition to check each subpartition range.)
Has OIDs: no
Options: orientation=row, compression=no, storage_type=USTORE, segment=off
--查询t1_sub_rr分区类型
gaussdb=# SELECT relname, parttype FROM pg_class WHERE relname = 't1_sub_rr';
relname | parttype
-----------+----------
t1_sub_rr | s
(1 row)
gaussdb=# DROP TABLE t1_sub_rr;
父主题: 基本概念