PostgreSQL中的时间是什么意思?

4
我发现PostgreSQL中有两种时间类型:
  1. \timing:返回查询执行时间和从服务器传输数据到客户端所需的时间成本。
  2. explain analyze:返回查询执行时间。
它们是正确的吗?如何查看查询计划时间? 在什么范围内,查询执行时间是可以接受的?毫秒级别?
谢谢。

1
怎么样:1)测试一下。2)每次只问一个问题,但要付出一些努力。 - Jakub Kania
谢谢,我得到了一些结果,但不确定它们的含义。Explain analyze返回的时间比\timing短得多,例如0.317毫秒与57.330毫秒。如果时间包括查询时间,那么我的问题是,然而,似乎没有关于它的证据或输出。 - user3419945
\timing 将包括从服务器传输完整结果到客户端所需的时间。 explain analyze 仅显示查询在服务器上执行所需的时间,而不将其发送到客户端(如手册中所述:http://www.postgresql.org/docs/current/static/sql-explain.html)。 - user330315
查询计划的时间怎么样?选择计划也需要一些时间,与执行查询的时间相比,这个时间可以忽略吗? - user3419945
1
无论您是运行解释器还是运行语句,都会始终选择计划。然而,“分析”选项具有(非微不足道的)开销,这也在手册中有所说明。 - user330315
1个回答

5

\timing是在客户端测量的时间。

EXPLAIN ANALYZE是在服务器端测量的时间。

\timing更加真实一些,因为结果可能会受到网络传输速度的影响。EXPLAIN ANALYZE不太真实,因为您消除了网络速度的影响(当您调查一些奇怪的时间时可能很有趣),但它显示有关查询处理的详细信息。如果没有任何其他参数,则计时测量的开销很大(在最近的PostgreSQL版本中较少)。当您可以获得更加真实的时间时,您可以使用

EXPLAIN (ANALYZE, TIMING OFF) SELECT ...

测量时间以毫秒为单位 - 可接受的范围取决于使用情况 - 对于Web应用程序,少于50ms;对于桌面应用程序,少于200ms;对于快速分析,少于5秒。但查询速度通常取决于IO速度,因此如果您需要处理20GB表格聚合,则不能期望少于100秒的时间(这取决于需要处理多大的表格部分)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接