获取Postgresql中执行查询的详细信息

时间:2016-11-01 08:53:18

标签: database performance postgresql transactions long-running-processes

我是PostgreSQL的新手。 请帮我解决这个问题。

我有一张桌子

company (
  id bigint primary key,
  name text,
  age integer,
  address character(50),
  salary real,
  gender character(1))

然后我做简单的查询:

select * from company where address='texas' and salary=10000
select * from company where address='texas' and salary=15000
select * from company where address='houston' and salary=10000
select * from company where address='texas' and salary=85000
select * from company where address='norway' and salary=100

如何获取已执行查询的详细信息,例如查询,输入WHERE的变量和总执行时间。所以我可以比较每个执行的查询,以了解长时间运行的输入类型。

谢谢,

1 个答案:

答案 0 :(得分:1)

当我读到这个问题时,听起来你正在寻找查询执行计划和执行细节,对吗?

如果是这样,您希望查看EXPLAIN的文档[1]并熟悉它们。

没有选项的

explain提供了查询计划。它实际上并不运行查询。

explain analyze为您提供预期与实际时间(请注意,它不会对输出数据进行解密,但这通常不是问题。它实际上会运行查询,因为只要您在选项中进行分析,它就会运行。

explain analyze verbose为您提供了更多信息。

偶尔指定您想要缓冲区统计信息可能会有所帮助,但这是一个罕见的极端情况。从这三个开始。

另请注意,您可以配置PostgreSQL来记录慢速查询,这将包括参数或输入。两者的结合对解决这些问题通常很重要。

[1] https://www.postgresql.org/docs/9.3/static/sql-explain.html