我的目标是什么?
测量实际查询时间,以便在消耗的时间不满意时进行优化。
到目前为止我做了什么?
我们一直在使用MySQL,在那里我们习惯使用SQL_NO_CACHE进行测量。虽然这不会使MySQL使用缓存,如提到here,但它比使用缓存更好。
实际的问题不是MySQL时间实际上是正确的,实际上并不是因为它不会禁用操作系统的缓存,而是关于如何测量从Postgres中缓存出来的查询的时间。
从上面的相同SO答案中可以看出,Postgres没有相应的内容,Postgres中的缓存工作方式也大不相同。
因此,如果我们进行多次查询并运行它,可能需要一些时间才开始,但进一步调用主要来自缓存(来自使用explain(analyze,buffers)。
建立上述事实后,我如何衡量查询时间。
问题1:由于需要进行大量预热,我们无法直接说出查询速度很慢
问题2:如果我们运行查询说5次并取平均值,则结果不准确,因为它使用缓存
问题
答案 0 :(得分:0)
您可以为缓存设置最低可能值以减少缓存效果
您也可以停止pg运行echo 3 /proc/sys/vm/drop_caches
以删除操作系统缓存
但是没有必要真正的缓存 您的测试环境应该是最接近生产的条件,并且产品肯定有缓存! 最好比较获取查询的不同方式或设计架构的不同方法,并选择最佳