awf*_*020 1 database postgresql sql-delete
Postgres 有支持老化旧记录的功能吗?
就像标题所说,我想删除所有超过 2 年的记录,并让它每隔几分钟或几小时检查一次。我见过很多年前的帖子都说“不”,但也许情况已经改变了。
除了DBA Stack Exchange 上的好答案之外,让我补充一下:
没有必要每隔几分钟就删除这些行。相反,您可以将它们隐藏起来以防止查询。
举个简单的例子:
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';
Run Code Online (Sandbox Code Playgroud)
视图很简单INSERT,你可以UPDATE直接DELETE在上面;不需要触发器。
visibledata现在,所有数据将在两年后自动消失。
有时,您会启动清理作业,仅删除所有超过两年的分区。