通过 Datastage Job 自动清除 PostgreSQL 表数据

问题描述 投票:0回答:2

我们有一个 Postgres 表,它被填得非常快(几乎 5GB/天)。我们想为每 2 个月的旧记录清除表格。

我们想实现一个 Datastage 作业来自动清除表。请提出完成此任务的可能方法。

postgresql automation datastage ibm-infosphere
2个回答
0
投票

PG 中的记录是否有创建记录的某种日期?届时,将记录日期与当前日期进行比较将是一个简单的 DataStage 作业,如果它们是 LT 60 天,则删除记录......


0
投票

我建议使用分区表。

在创建表语句中使用

PARTITION BY RANGE (month-column)
按月份(如 2023-01、2023-02 等)对表进行分区。使用
ALTER TABLE DETACH PARTITION
命令定期删除旧分区。您也可以按周左右进行分区。

在使用分区表之前,请务必阅读文档并了解其工作原理以及优缺点。如果 select 语句包含分区列(如月份),分区表读取数据速度很快,但在查询计划和执行期间通常会付出更多的开销。在数据仓库环境中,这并不重要。如果您在实时事务数据库中,则应考虑这一点。

据我所知,Postgress 不会动态创建新分区,因此必须对其进行管理,例如通过写入数据的软件。如果是 DataStage,则构建一个作业,从源中获取不同的月份列表,并在需要时创建新分区。在将新数据写入表之前以独占方式运行此作业。 (例如 Oracle 可以动态添加新分区。)

不确定 PostgreSQL 中的压缩方法,但一般来说,如果你有很多文本列,我也建议启用压缩。压缩将节省很多 i/o 流量和表空间。在大多数情况下,压缩的 CPU 时间可以忽略不计。

© www.soinside.com 2019 - 2024. All rights reserved.