我的 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/