如何在PostgreSQL中获取每小时在表上插入的次数



我需要一个设置,其中超过60天的行从表中删除在PostgreSQL

我已经创建了一个函数和一个触发器:

BEGIN
DELETE FROM table
WHERE updateDate < NOW() - INTERVAL '60 days';
RETURN NULL;
END;
$$;

但是我相信如果插入频率很高,这将不得不非常频繁地扫描整个表,这将导致高DB负载。我可以每天每小时通过cron作业或Lambda函数运行这个函数。我需要知道那张表上每小时的插入值才能做出决定。

是否有一个查询或工作,我可以设置将收集详细信息?

要计算每小时记录的数量,可以运行以下查询:

SELECT  CAST(updateDate AS date) AS day
,   EXTRACT(HOUR FROM updateDate) AS hour
,   COUNT(*)
FROM _your_table
WHERE   updateDate BETWEEN ? AND ?
GROUP BY
1,2
ORDER BY
1,2;

我们每天在一个按月分区的表上执行大约4000万次INSERT操作。3个月后,我们就放弃分割。这可比DELETE快多了。

最新更新