pgAdmin 是否增加了查询时间开销?

Eas*_*her 6 postgresql pgadmin query-performance

我刚刚写了一个很长的问题,关于我如何优化一个相当简单的查询,该查询花费的时间比我希望的要长得多。我一直向pgAdmin查询。然后我使查询变得越来越简单,直到我最终查询一个新创建的表的主键,其中只有 1 行。

create table perf_test (id bigint primary key);
Run Code Online (Sandbox Code Playgroud)

然后查询:

select
  count(t.id)
from
  perf_test t
where
  t.id = 1
;
Run Code Online (Sandbox Code Playgroud)

消息输出为:

Successfully run. Total query runtime: 66 msec.
1 rows affected.
Run Code Online (Sandbox Code Playgroud)

我需要优化一个查询,该查询从我的应用程序发出时通常需要大约 30-40 毫秒。如果 pgAdmin 中最简单的查询的执行时间已经长得多,我该如何实验和测量性能?

jja*_*nes 6

是的,pgAdmin 增加了大量的延迟开销。我很惊讶你甚至可以将其低至 66 毫秒。

答案很简单,不要使用 pgAdmin 来做这样的事情。

要尝试找出查询速度慢的原因,您应该使用EXPLAIN (ANALYZE, BUFFERS)on 查询。pgAdmin 确实提供了一种方法来做到这一点,但 IME 严格来说比通过psql或使用 auto_explain 将计划捕获到日志文件中更糟糕。


Erw*_*ter 6

您正在寻找错误的指标

总查询运行时间:66 毫秒。

pgAdmin 中的这份简历包括网络延迟和客户端开销。用于EXPLAIN (ANALYZE, BUFFERS)详细的查询计划和EXPLAIN (ANALYZE, TIMING OFF)最短时间。客户端对此指标根本不重要,您可以从服务器获取时间,而无需网络延迟和客户端开销。

看: