【发布时间】:2019-10-11 23:05:31
【问题描述】:
我有一个 24/7 的 postgres 数据库,我在其中对一些主要表进行了分区,以便在数据仍在加载时进行维护。不幸的是,对单个分区的更改似乎仍然会对父表产生影响。
我的表被定义为 -
CREATE TABLE tableA ( loadedTime TIMESTAMP, rawData CHARACTER(150))
PARTITION BY RANGE (loadedTime)
以及各个分区 -
CREATE TABLE tableA_yyyymmdd PARTITION OF tableA FOR VALUES FROM () TO ()
其中范围等于个别日期。
我有一个进程将记录24/7插入父表tableA(不是特定分区),loadedTime总是指当前时间,所以数据是总是被加载到今天的分区中。
为什么更改某些旧分区的表空间会导致插入当前分区超时?我的理解是分区几乎就像单独的表,我应该能够在分区上工作而不会导致父表出现问题 - 还是我误解了?
更新 - 当前使用 postgres 10.5。如果我尝试从父表中分离、真空和附加旧分区,我会遇到类似的问题。我可以在分离分区后访问父级,但是在分离/附加步骤期间,DETACH 和 ATTACH 需要一段时间,并且在父级超时时插入。
【问题讨论】:
-
您使用的是 Postgres 10 还是 11?