我的目标是什么?
测量实际查询时间,以便在所消耗的时间不令人满意时可以进行优化。
到目前为止我做了什么?
我们一直在使用MySQL,在这里我们使用SQL_NO_CACHE.While来度量,这并不能使MySQL像前面提到的那样使用缓存,它比使用缓存要好一些。
实际的问题并不是MySQL时间实际上是正确的,实际上并不是因为它没有禁用OS的缓存,而是关于如何度量查询将缓存从Postgres中取出的时间。
从上面同样的答案中可以看出,Postgres没有对应的内容,Postgres中的缓存工作方式也非常不同。
因此,如果我们使用一个查询并多次运行它,那么在开始时可能需要一些时间,但是更多的调用将主要来自高速缓存(使用explain (analyze,buffers) )。
有了以上事实,我如何才能衡量查询时间。
问题1:我们不能直接说查询第一次很慢,因为需要大量的热身。
问题2:如果我们运行查询(例如5次并取平均值),结果是不准确的,因为它使用缓存。
问题
发布于 2015-10-21 17:06:33
您可以为缓存设置最低的可能值,以减少缓存效果。
您还可以停止pg运行echo 3 /proc/sys/vm/drop_caches以删除os缓存。
但是没有必要真正缓存您的测试环境应该是最接近于生产的条件,并且在产品中您肯定有缓存!最好比较不同的查询方式或不同的模式设计方法,并选择最好的
https://stackoverflow.com/questions/33262663
复制相似问题