PostgreSQL分区表使用示例

1. 创建分区表

PostgreSQL 分区表支持 3 种类型,分别是 range 分区表、list 分区表和 hash 分区表。

1.1 创建 range 分区表

-- 创建分区父表
create table t(id int, name text, ts timestamp) partition by range(ts);

-- 创建分区子表
create table t_p202210 partition of t for values from ('2022-10-01 00:00:00') to ('2022-11-01 00:00:00');
create table t_p202211 partition of t for values from ('2022-11-01 00:00:00') to ('2022-12-01 00:00:00');

-- 解除分区子表与父表的关联
alter table t detach partition t_p202211;

-- 分区子表与父表创建关联
alter table t attach partition t_p202211 for values from ('2022-11-01 00:00:00') to ('2022-12-01 00:00:00');

1.2 创建 list 分区表

-- 创建 list 分区父表
create table t(id int, name text, logdate date) partition by list(logdate);

-- 创建 list 分区子表
create table t_p20221001 partition of t for values in ('2022-10-01');
create table t_p20221002 partition of t for values in ('2022-10-02');
create table t_p20221003 partition of t for values in ('2022-10-03');

1.3 创建 hash 分区表

-- 创建 hash 分区父表
create table t(id int, name text, logdate date) partition by hash(id);

-- 创建 hash 分区子表
create table t_p0 partition of t for values with (modulus 3, remainder 0);
create table t_p1 partition of t for values with (modulus 3, remainder 1);
create table t_p2 partition of t for values with (modulus 3, remainder 2);

2. 删除分区表

删除分区父表,子表也会一起被删除。

drop table t;

删除分区子表,父表和其他子表不会被删除。

drop table t_p202211;

3. 调整分区表父子关系

使用 alter table xxx detach 和 alter table xxx attach 语法进行分区表父子关系调整,见 1.1 节示例。

4. 多级分区表

PostgreSQL 支持创建多级分区表,详见链接:PostgreSQL 创建多级分区表


以上示例在 PG 13.3 版本上验证通过。

文章评论

0条评论