PostgreSQL是否有内置功能,每分钟或每小时删除旧记录,比如删除所有超过2年的记录,每小时检查一次。

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

Postgres有没有支持老记录老化的功能?

就像标题说的那样,我想删除所有超过2年的老记录,让它每隔几分钟或几个小时检查一次。我看到过很多年前的帖子都说没有,但也许事情已经发生了变化。

database postgresql sql-delete
2个回答
3
投票

除了 关于DBA堆栈交流的好答案,让我补充一下。

没有必要每隔几分钟就删除这些行。而是将它们从查询中隐藏起来。

拿这个简单的例子来说。

CREATE TABLE realdata (
   id bigint PRIMARY KEY,
   payload text,
   create_time timestamp with time zone DEFAULT current_timestamp NOT NULL
) PARTITION BY RANGE (create_time);

CREATE VIEW visibledata AS
   SELECT * FROM realdata
   WHERE create_time > current_timestamp - INTERVAL '2 years';

视图很简单,你可以 INSERT, UPDATEDELETE 直接上,不需要触发器。

现在,所有的数据都会自动地从 visibledata 两年后。

偶尔你会启动一个清理工作,简单地放弃所有超过两年的分区。


0
投票

答案是否定的:事情并没有因此而改变。

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