我的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;
查看正在运行的查询,则它不会显示除我在日志中看到的任何其他查询。
我怎么知道这个持续时间是哪个查询?
答案 0 :(得分:2)
但之后又记录了两个持续时间,其声明未打印。
如果你有log_duration = on
,这些可能是语句执行的三个阶段的解析,绑定和执行持续时间。它只通过客户端应用程序分三个阶段完成 - psql
一次运行。
如果您只想要总数,请改用log_min_duration_statement = 0
。
是的,令人困惑。也许值得编写并将其作为可用性问题报告提交给pgsql-general。