Postgres:将非分区 table 转换为分区,但有一点停机时间

Postgres: Convert non-partitioned table to partitioned with a bit downtime

我有一个未分区的 table record,它是仅附加的,我打算使用 postgres 本机分区按 created 时间戳列的范围对其进行分区。 (每月一个分区)

我可以忍受一点停机时间,所以我的计划是:

  1. 创建新的 table record_partitioned 分区;将过去一个月的所有数据复制到新分区 table

  2. 停止写入 table,将当前月份的数据复制到新的分区 table(有点停机)

  3. 将旧 table 重命名为 record_archived,将新 table 重命名为 record

  4. 恢复写入table

这有意义吗?

这应该可行,但您也可以考虑以下几点:

  • 创建一个新分区table

  • 为当前月份添加一个分区

  • 附加现有的大 table 作为所有过去数据的分区

  • 现有 table 中的所有数据都过期后,将其删除