PostgreSQL 有没有办法统计每个 SQL 执行的次数

2020-06-01 09:44:01 +08:00
 imherer
最近有个需求是要看每个 SQL 的执行次数占比,PostgreSQL 本身有什么地方有统计这个东西吗?

还是只能自己做 log 统计了?
4104 次点击
所在节点    PostgreSQL
10 条回复
opengps
2020-06-01 10:22:30 +08:00
怎样算每个?
一般来说查询语句里都有动态参数,参数不通时候算一个还是算不同的?
imherer
2020-06-01 10:24:56 +08:00
@opengps 对了,忘了说这点了。 参数不同算一个,所有动态参数都算一个
optional
2020-06-01 11:08:18 +08:00
不如自己做,还可以制定逻辑,最简单的是继承一下 pg 的驱动类,换成自己的异步记录一下
maierhuang
2020-06-01 11:13:34 +08:00
pg_stat_statements 这个插件
hantsy
2020-06-01 11:37:31 +08:00
Redhat Debezium 可以监控所有的数据操作,EDA 框架,可以发送 Apache kafka 等。

https://debezium.io/

其实这东西实现也不是太难,在 SQL 执行之前加入 Hook, 通过消息发送到自己的统计数据库(比如 Redis )里面去。
cstj0505
2020-06-01 12:41:40 +08:00
日志开启 sql 记录,pgbadger 分析日志
sparkle2015
2020-06-01 12:53:19 +08:00
lff0305
2020-06-01 16:04:44 +08:00
如果是 Java 程序的话可以用一些 JDBC Driver 的 Wrapper 来做这件事
类似 JDBC Performance Logger
hangszhang
2020-06-02 07:31:35 +08:00
自己在 server 层做, 记录在日志里面, flume 实时收集或者离线脚本定期收集日志
encro
2020-07-01 16:42:01 +08:00
mysql 慢日志分析工具室可以的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/677366

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX