Postgres:如何查看数据库服务器正在执行的所有SQL语句?

由于性能原因,我正在审查应用程序针对数据库所做的每个SQL语句。 有没有简单的方法来loggingPostgreSQL数据库服务器执行的所有语句? 谢谢。

你正在寻找的configuration选项是log_statement = "all" (如果你只是想要的语句),或者log_min_statement_duration = <some number>如果你只是“慢”查询(对于一些“慢”的价值)。 有关日志loggingconfiguration的更多详细信息,请参见http://www.postgresql.org/docs/current/static/runtime-config-logging.html

当然,你可以自己检测最慢的查询,但我build议你使用pgFouine – 一个PostgreSQL日志分析器。 这很容易安装,真的很有用。

示例报告: 这里和这里 。

auto_explain模块对此非常有用。 它不仅会logging语句,还会logging执行计划,甚至可以logging在PL / PgSQL函数中运行的语句。 除非启用分析,否则性能下降的程度相当低,在这种情况下,您会对所有查询产生一定的时间开销。

请参阅auto_explain中的auto_explain