我正在使用在 Debian Linux 上运行的 Postgresql 9.1 执行一些基准测试任务。我想对共享公共部分的查询工作负载进行基准测试。在运行每个查询之前,我重新启动数据库并执行以下命令:
回声 3 > /proc/sys/vm/drop_caches
旨在删除共享内存和操作系统缓存。但是,我注意到,如果我以不同的顺序运行相同的查询工作负载,我会得到不同的查询响应时间。我怀疑查询优化器以某种方式“记住”了如何有效地执行公共查询部分或重用一些以前缓存的结果。
您对如何解决此问题有任何想法吗?无论查询顺序如何,我都希望获得大致相同的响应时间。请注意,我正在解析 EXPLAIN 输出以提取实际运行时间。