Postgresql 将postgres分区添加到现有表中

Postgresql 将postgres分区添加到现有表中,postgresql,partitioning,pg-partman,Postgresql,Partitioning,Pg Partman,所有例子都表明: CREATE TABLE ... PARTITION BY ... 这有点可笑,因为只有当数据集变得太大时才使用分区,而根据定义,数据集不会是一个新表。如果有人正在用分区创建一个新表,我想几乎所有人都会批评这是一个过早的优化 只需创建一个分区表并将现有表附加为分区: create table test (a int); insert into test select generate_series(1,10); alter table test_parent attach

所有例子都表明:

CREATE TABLE ... PARTITION BY ...

这有点可笑,因为只有当数据集变得太大时才使用分区,而根据定义,数据集不会是一个新表。如果有人正在用分区创建一个新表,我想几乎所有人都会批评这是一个过早的优化

只需创建一个分区表并将现有表附加为分区:

create table test (a int);

insert into test select generate_series(1,10);

alter table test_parent attach partition test DEFAULT;

select * from test_parent;
 a
----
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
(10 rows)


您还可以重命名该表。但是,如果执行此操作,则需要重新定义指向原始表的任何视图。

我关心的是重命名具有数百万行的表?或者,行数无关紧要,它只是对系统表的更新。它确实需要一个独占锁来完成,但实际操作非常快。更新视图或函数中的任何依赖项的问题要大得多。