【问题标题】:Should I have to create one table for each partition for the partitioned table in PostgreSQL我是否必须为 PostgreSQL 中的分区表的每个分区创建一个表
【发布时间】:2020-02-27 15:53:15
【问题描述】:

我有一个分区表,每个分区还有另外两个表

CREATE TABLE measurement (
    logdate         date not null,
    peaktemp        int,
    unitsales       int
) PARTITION BY RANGE (logdate);

CREATE TABLE measurement_y2016 PARTITION OF measurement 
FOR VALUES FROM ('2016-01-01') TO ('2017-01-01');

CREATE TABLE measurement_y2017 PARTITION OF measurement
FOR VALUES FROM ('2017-01-01') TO ('2018-01-01');

我会问这是否是使用分区表的唯一方法,为每个分区创建一个表。

如果我的表有 100 个分区,那么这个单个分区表将有 100 个表。

是否可以为Mysql或Oracle之类的Postgres创建分区表,一张表就可以了。

【问题讨论】:

  • 这与 Oracle 中的相同。在 Oracle 中,您将不得不写 alter table add partition ... a 100 次。

标签: postgresql


【解决方案1】:

替代方法是创建一个触发器BEFORE INSERT,在插入时创建适当的分区。

我不想这样做,因为

  1. 它为每个插入增加了不可忽略的开销

  2. 我不想仅仅因为一些数据输入错误而得到一个 3000 年的分区

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多