Postgres有没有支持老记录老化的功能?
就像标题说的那样,我想删除所有超过2年的老记录,让它每隔几分钟或几个小时检查一次。我看到过很多年前的帖子都说没有,但也许事情已经发生了变化。
除了 关于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
, UPDATE
和 DELETE
直接上,不需要触发器。
现在,所有的数据都会自动地从 visibledata
两年后。
偶尔你会启动一个清理工作,简单地放弃所有超过两年的分区。
答案是否定的:事情并没有因此而改变。