记录的持续时间,但不是语句 - postgresql.是否有针对此行为的任何特定查询



我的postgresql.conf中有以下设置

log_statement='all'
log_duration=on

当我运行 psql 并运行任何查询(如选择/创建用户/等)时,它会记录语句以及持续时间。如果我提供查询以连接到其他数据库

c <database_name>

它既不记录持续时间也不记录语句。我认为它可能不会记录以反斜杠开头的元命令的持续时间和语句。但它确实记录了其中一些的语句和持续时间,例如 dt l .

我认为可能有一个查询/命令列表,将为其生成或不生成日志。 有没有这样的列表?

话虽如此,导致我挖掘这个的原始问题是——

我的应用程序(golang-react 应用程序)与 postgresql 和 logs 语句及其持续时间交互。但在那之后,它又记录了两个持续时间,其语句不会打印。(我已经评论了log_min_duration_statement),所以我不确定这个持续时间是什么查询。此外,如果我当时SELECT query,xact_start,query_start FROM pg_stat_activity;查看正在运行的查询,除了我在日志中看到的查询之外,它不会显示任何其他查询。

我如何知道此持续时间适用于哪些查询?

但在那之后,它又记录了两个持续时间,其语句不会打印。

这些可能是语句执行的三个阶段的解析、绑定和执行持续时间(如果您有 log_duration = on )。它仅通过客户端应用程序分三个阶段完成 - psql一次性运行。

如果您只想要总计,请改用log_min_duration_statement = 0

是的,这令人困惑。也许值得把它写下来,并作为可用性问题报告提交给pgsql-general。

最新更新