记录的持续时间但不是语句 - postgresql。对此行为有任何具体疑问吗?

时间:2016-04-22 06:54:26

标签: postgresql logging

我的postgresql.conf

中有以下设置
log_statement='all'
log_duration=on

当我运行psql并运行任何查询(如select / create user / etc)时,它会记录语句以及持续时间。如果我给查询连接到不同的数据库

\c <database_name>

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

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

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

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

我怎么知道这个持续时间是哪个查询?

1 个答案:

答案 0 :(得分:2)

  

但之后又记录了两个持续时间,其声明未打印。

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

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

是的,令人困惑。也许值得编写并将其作为可用性问题报告提交给pgsql-general。