Postgres数据按日期“早于x天”进行分区

时间:2018-11-30 16:27:42

标签: database postgresql partitioning

我想对一个包含大量旧数据的大表进行分区。

我认为我可以按日期列对表进行分区。

我想实现的是,只有最近30天的记录保留在一个分区中,其余记录保留在“归档”分区中

有没有办法做到这一点?

谢谢, 戴夫特

1 个答案:

答案 0 :(得分:1)

创建“过去30天”和“归档”(早于30天之前)分区会随着时间的流逝自动在分区之间迁移记录,即使在最新版本中,Postgres本身也不支持此功能。从技术上讲,您可以执行此操作,但是您需要脚本来在分区之间迁移数据并更新分区定义,这将很快变得笨拙而复杂,并可能导致在分区更新时每晚锁定表。

更简单的方法是创建一个分区,该分区保存30天以上的所有数据,然后为每个月创建分区。文档中描述了这种情况:https://www.postgresql.org/docs/current/ddl-partitioning.html