【问题标题】:How to get the count of hourly inserts on a table in PostgreSQL如何获取 PostgreSQL 表中每小时插入的计数
【发布时间】:2023-03-09 11:41:01
【问题描述】:

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

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

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

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

我可以设置一个查询或作业来收集详细信息吗?

【问题讨论】:

  • 恐怕我不明白你的问题 - 你是在问如何设置 cron 作业?
  • 为@NevilleKuyt 道歉,需要一种方法来了解每小时在一张桌子上发生的交易数量(主要是插入)。
  • 这很有趣。您的评论和问题标题似乎与问题完全无关。你想要什么:计数插入或删除行?

标签: postgresql sql-insert amazon-aurora postgresql-11


【解决方案1】:

只是为了计算每小时的记录数,您可以运行以下查询:

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 快得多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 2015-05-26
    • 2016-03-17
    • 2014-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多