我正在使用运行在Debian Linux上的Postgresql 9.1执行一些基准测试任务。我想要对一个具有共同部分查询工作负载进行基准测试。在运行每个查询之前,我重新启动数据库并执行以下命令:
echo 3 > /proc/sys/vm/drop_caches
旨在清除共享内存和操作系统缓存。然而,我注意到如果我以不同的顺序运行相同的查询工作负载,我会得到不同的查询响应时间。我怀疑查询优化器会“记住”如何高效地执行常见的查询部分,或者重用先前缓存的结果。
您有什么办法绕过这个问题吗?我想获得大致相同的响应时间,无论查询顺序如何。请注意,我正在解析EXPLAIN输出以提取实际运行时间。