更新时间:2025-05-29 GMT+08:00
分区表(母表)
分区表作为用户实际操作的表对象,支持常规DML(数据操作语言)的增、删、查、改操作。通常通过在建表DDL(数据定义语言)语句中显式使用PARTITION BY子句进行定义。创建成功以后在pg_class表中新增一条记录,其parttype字段值为'p'(标识一级分区)或's'(标识二级分区),以此标记该记录对应的表为分区母表。
需要注意的是,分区母表本质上是逻辑概念,其对应的物理表文件并不实际存储数据。
示例: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.)
Distribute By: HASH(c1)
Location Nodes: ALL DATANODES
Has OIDs: no
Options: orientation=row, compression=no
--查询t1_hash分区类型。
gaussdb=# SELECT relname, parttype FROM pg_class WHERE relname = 't1_hash';
relname | parttype
---------+----------
t1_hash | p
(1 row)
--删除t1_hash。
gaussdb=# DROP TABLE t1_hash;
父主题: 基本概念