测量查询执行时间,不包括postgres中的启动成本

时间:2013-06-23 22:24:03

标签: sql postgresql postgresql-9.1

我想测量postgres执行查询所花费的总时间,不包括启动费用。早些时候我正在使用\ timing,但现在我发现\时机包括启动费用。

我也试过:“解析分析”,其中我发现实际时间以特定格式指定,如:实际时间= 12.04..12.09 那么,这是否意味着执行postgres查询所需的时间(不包括启动时间)为0.05。如果没有,那么有没有办法排除启动成本并测量查询执行时间?

2 个答案:

答案 0 :(得分:3)

你想要的实际上是非常不明确的。

“启动成本”可能意味着:

  • 建立新连接的网络连接开销和后端启动成本。避免重复使用相同的会话。

  • 发送查询并获取结果的网络往返时间。避免使用log_statement_min_duration = 0explain analyze模块测量服务器端的时间auto_explain或(带时间开销)。

  • 查询计划时间。避免PREPARE查询,然后仅计算后续EXECUTE

  • 锁定获取时间。目前没有任何方法可以排除这种情况。

请注意,使用EXPLAIN ANALYZE可能不适合您的目的:它会抛出查询结果,并且由于其详细的计时而增加了自己的成本。我会设置log_statement_min_duration = 0,适当地设置client_min_messages,并从日志输出中捕获计时。

所以听起来你想要PREPARE一个查询,然后EXPLAIN ANALYZE EXECUTEEXECUTE将其log_statement_min_duration设置为0。

答案 1 :(得分:0)

要分别探索PLANNING成本和EXECUTE成本,您需要设置几个postgres.conf参数:

log_planner_stats = on
log_executor_stats = on

并浏览您的日志文件。

更新: 1.执行以下命令查找配置文件位置:

SHOW config_file;

2。设置参数。不要忘记删除评论符号'#'。 3.重新启动postgresql服务 4.执行您的查询 5.浏览您的日志文件。