我的 postgresql.conf 中有以下设置

log_statement='all'
log_duration=on

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

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

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

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

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

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

最佳答案



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

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

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

关于postgresql - 记录的持续时间但不是语句——postgresql。是否有针对此行为的任何特定查询?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36786949/

10-13 09:44