获取运行缓慢的查询的统计信息

use*_*809 9 postgresql performance

我的数据库应用程序运行许多不同的查询。我已设置log_min_duration_statement为 1000。但记录在那里的查询并不总是很慢,大多数情况下它们只需要几毫秒。

是否可以获得所有查询的统计信息,以及它们花费超过 1000 毫秒的频率?

Joi*_*dio 10

使用 SQL 命令安装扩展 pg_stat_statements

CREATE EXTENSION pg_stat_statements

您可能希望确保使用适当的用户(例如您的应用程序使用的用户或某些 dba 帐户)来创建它。请注意,任何创建扩展的用户也将拥有它。

这将需要重新启动服务器才能使用(因为您必须稍微更改 postgresql.conf 中的配置以影响内存消耗),但它会为您提供所有查询的统计信息。

有关 pg_stat_statements 提供的内容的更多信息,请参阅文档页面。有关pg_stat_statements 的 postgresql.conf 配置文件配置的快速参考,请参见此处

安装并运行后,您可以通过查询 pg_stat_statements 视图来查看统计信息。

select * from pg_stat_statements;
-- or
select * from pg_stat_statements where total_time / calls > 200; -- etc ..
Run Code Online (Sandbox Code Playgroud)