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

Jin*_*Kim 25 postgresql sql database

出于性能原因,我正在审查应用程序针对数据库执行的每条 SQL 语句。有没有一种简单的方法来记录 PostgreSQL 数据库服务器执行的所有语句?谢谢。

wom*_*ble 31

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

  • 我真的很喜欢 log_statement = 'mod' 选项。它只显示创建、更新和删除,并跳过所有选择语句。如果您想弄清楚哪些代码正在调整某个字段,那就太好了。 (6认同)

Cra*_*ger 5

auto_explain模块对此非常有用。它不仅会记录语句,还会记录它们的执行计划,甚至可以记录在 PL/PgSQL 函数中运行的语句。除非启用分析,否则性能损失相当低,在这种情况下,所有查询都会产生相当多的计时开销。

请参阅auto_explain文档。