V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
imherer
V2EX  ›  PostgreSQL

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

  •  
  •   imherer · 2020-06-01 09:44:01 +08:00 · 4335 次点击
    这是一个创建于 1620 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近有个需求是要看每个 SQL 的执行次数占比,PostgreSQL 本身有什么地方有统计这个东西吗?

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

    https://debezium.io/

    其实这东西实现也不是太难,在 SQL 执行之前加入 Hook, 通过消息发送到自己的统计数据库(比如 Redis )里面去。
    cstj0505
        6
    cstj0505  
       2020-06-01 12:41:40 +08:00 via Android
    日志开启 sql 记录,pgbadger 分析日志
    lff0305
        8
    lff0305  
       2020-06-01 16:04:44 +08:00
    如果是 Java 程序的话可以用一些 JDBC Driver 的 Wrapper 来做这件事
    类似 JDBC Performance Logger
    hangszhang
        9
    hangszhang  
       2020-06-02 07:31:35 +08:00
    自己在 server 层做, 记录在日志里面, flume 实时收集或者离线脚本定期收集日志
    encro
        10
    encro  
       2020-07-01 16:42:01 +08:00
    mysql 慢日志分析工具室可以的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3015 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 13:40 · PVG 21:40 · LAX 05:40 · JFK 08:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.