首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测量Postgres中的实际查询性能

测量Postgres中的实际查询性能
EN

Stack Overflow用户
提问于 2015-10-21 14:56:15
回答 1查看 816关注 0票数 1

我的目标是什么?

测量实际查询时间,以便在所消耗的时间不令人满意时可以进行优化。

到目前为止我做了什么?

我们一直在使用MySQL,在这里我们使用SQL_NO_CACHE.While来度量,这并不能使MySQL像前面提到的那样使用缓存,它比使用缓存要好一些。

实际的问题并不是MySQL时间实际上是正确的,实际上并不是因为它没有禁用OS的缓存,而是关于如何度量查询将缓存从Postgres中取出的时间。

从上面同样的答案中可以看出,Postgres没有对应的内容,Postgres中的缓存工作方式也非常不同。

因此,如果我们使用一个查询并多次运行它,那么在开始时可能需要一些时间,但是更多的调用将主要来自高速缓存(使用explain (analyze,buffers) )。

有了以上事实,我如何才能衡量查询时间。

问题1:我们不能直接说查询第一次很慢,因为需要大量的热身。

问题2:如果我们运行查询(例如5次并取平均值),结果是不准确的,因为它使用缓存。

问题

  • 考虑到问题1,2,我的目标是确定查询是否需要性能调优,而不是实际的性能/负载测试,在这种情况下,缓冲区缓存就会出现在画面中。
  • 据我所知,缓存包含8KB块中的页面,它只是从缓存中脱离出来,就像从内存中快速读取一样。我的理解对吗?
EN

回答 1

Stack Overflow用户

发布于 2015-10-21 17:06:33

您可以为缓存设置最低的可能值,以减少缓存效果。

您还可以停止pg运行echo 3 /proc/sys/vm/drop_caches以删除os缓存。

但是没有必要真正缓存您的测试环境应该是最接近于生产的条件,并且在产品中您肯定有缓存!最好比较不同的查询方式或不同的模式设计方法,并选择最好的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33262663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档