我想针对主键 ID 的各种值对特定复杂查询 JOIN 的性能进行基准测试。大多数以前的方法都说对有问题的查询使用 EXPLAIN ANALYZE 并获取“总运行时间:.... ms”以计算性能。问题是,即使我使用相同的 ID,我也会得到非常不同的结果,例如时间范围从 20 秒到 140 秒不等。请注意,缓存与此无关,因为在不同的时间运行相同的查询时,我会得到这种变化,即使我们谈论的是相同的 ID(我总是得到相同的查询计划)。
所以我的问题是:
- 总运行时间是否取决于客户端/接口(例如 pgAdminIII 与 psql)。我认为 psql 给出了更一致的值
- 它是否取决于网络时间(我应该在本地主机上运行还是我什至可以在远程机器上运行)
- 有没有办法进行更一致的测量,或者这种波动被认为是正常的?
我在具有 2GB 共享缓冲区的 Linux Ubuntu 12.10 64 位机器上使用 PostgreSQL 9.2.6 64 位。
阐述: