如何在PostgreSQL中获取表上每小时插入的计数
我需要一个设置,将超过60天的行从PostgreSQL表中删除 我创建了一个函数和一个触发器:如何在PostgreSQL中获取表上每小时插入的计数,postgresql,sql-insert,amazon-aurora,postgresql-11,Postgresql,Sql Insert,Amazon Aurora,Postgresql 11,我需要一个设置,将超过60天的行从PostgreSQL表中删除 我创建了一个函数和一个触发器: BEGIN DELETE FROM table WHERE updateDate < NOW() - INTERVAL '60 days'; RETURN NULL; END; $$; 开始 从表中删除 其中updateDate
BEGIN
DELETE FROM table
WHERE updateDate < NOW() - INTERVAL '60 days';
RETURN NULL;
END;
$$;
开始
从表中删除
其中updateDate
但是我相信如果插入频率很高,那么必须经常扫描整个表,这将导致高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万次插入,这是按月分区的。三个月后,我们就把分区拆了。这比删除要快得多。恐怕我不明白你的问题-你是在问如何设置cron作业吗?对此深表歉意@NevilleKuyt,需要一种方法来了解每小时表上发生的事务数(主要是插入)。这很有趣。您的评论和问题标题似乎与问题完全无关。您想要什么:计数插入或删除行?