如何比较两个要在Postgres上运行的SQL查询

时间:2019-05-21 20:46:51

标签: sql database postgresql benchmarking

我需要比较将在我的Postgres数据库中运行的两个查询。

我怎么知道它们的执行时间和其他统计信息,以便在它们之间产生可靠的基准?

1 个答案:

答案 0 :(得分:2)

我可以想到两个有趣的数据点来收集和比较:

  1. 执行时间。

    为此,只需使用通过UNIX套接字连接的psql来执行查询(以分解网络),然后使用psql的{​​{1}}命令来测量执行时间,如客户。

    请勿为此使用\timing,因为那样会增加明显的开销,从而影响您的测量。

    确保多次运行秋千,以获得可靠的数字。该数字将对应于具有热缓存的执行时间。

    如果要使用冷缓存来衡量执行时间,请重新启动PostgreSQL 并清空文件系统缓存

  2. 查询接触的块数。

    为此,对每个查询运行一次EXPLAIN (ANALYZE)

    如果触摸的块数量对于性能而言很重要:查询触摸的块越少,它(通常)就会越快。这个数字对于冷缓存的性能尤为重要。块越少,取决于缓存的执行时间就越少。