PostgreSQL 修改追踪SQL语句的字节长度

前言

使用SQL Server时有 SQL server profiler 工具可以监视SQL执行过程和调试存储过程,在使用PostgreSQL时也首先想看下是否有类似的工具或者SQL,在查阅相关资料后,可以利用 pg_stat_statements 模块达成目的
但在追踪PGSQL的sql语句执行情况时,当sql达到一定长度后 能看到的sql语句会被截取

过程

获取SQL执行情况的语句

SELECT
    procpid,
    START,
    now() - START AS lap,
    current_query
FROM
    (
        SELECT
            backendid,
            pg_stat_get_backend_pid (S.backendid) AS procpid,
            pg_stat_get_backend_activity_start (S.backendid) AS START,
            pg_stat_get_backend_activity (S.backendid) AS current_query
        FROM
            (
                SELECT
                    pg_stat_get_backend_idset () AS backendid
            ) AS S
    ) AS S
WHERE
    current_query <> '<IDLE>'
ORDER BY
    lap DESC;

pg_stat_get_backend_activity() 这个数据库函数可以拿到SQL,但是当SQL达到一定字数后得到的字符是截断后的,也就是说这个函数返回的字符长度有限制。这个限制是存储在pgsql的安装目录配置文件下的,以windows系统为例:
配置文件名为 postgresql.conf

只需要修改该文件下的 track_activity_query_size 对应的值即可,我这里改为了1MB

修改配置后,重启pgsql 的服务,即可应用新的配置

引用:
https://blog.csdn.net/nasen512/article/details/125769140
https://blog.csdn.net/sunny_day_day/article/details/118199980#2_pg_stat_statements_107

posted @ 2023-05-17 09:41  呱呱蛙ꪝ·  阅读(366)  评论(0)    收藏  举报