首页 > 解决方案 > Postgres:统计过去 1 分钟内执行的所有 INSERT 查询

问题描述

我可以对 PostgreSQL 服务器上执行的所有 INSERT 查询进行当前活动计数,如下所示:

SELECT count(*) FROM pg_stat_activity where query like 'INSERT%'

但是有没有办法计算给定时间段内服务器上执行的所有 INSERT 查询?例如在过去的一分钟?

我有一堆表,我向其中发送了很多插入,我想以某种方式汇总每分钟插入的行数。我可以为此编写一个解决方案,但是如果可以以某种方式直接从服务器中提取,那就容易多了。

像这样的任何类型的统计数据,在某个时间段内,将非常有帮助,查询处理所需的平均时间,或知道每分钟通过的带宽等。

注意:我使用的是 PostgreSQL 12

标签: postgresql

解决方案


我相信你可以使用审计触发器

此审核将创建一个表,用于注册和 INSERT操作。所以你可以适应。因此,每次您的数据库运行其中一个命令时,审计表都会记录操作、表和操作时间。因此,使用一分钟前的 a在所需的桌子上做 a 会很容易。UPDATEDELETECOUNT()WHERE


推荐阅读