gpt4 book ai didi

database - 测量 Postgres 中的实际查询性能

转载 作者:行者123 更新时间:2023-11-29 13:55:26 24 4
gpt4 key购买 nike

我的目标是什么?

衡量实际的查询时间,如果耗时不理想,可以进行优化。

到目前为止我做了什么?

我们一直在使用 MySQL 并在那里使用 SQL_NO_CACHE 进行测量。虽然这不会使 MySQL 使用缓存,如前所述 here它比使用缓存要好一些。

真正的问题不是 MySQL 时间实际上是正确的,实际上不是因为它没有禁用操作系统的缓存,而是关于如何测量一个查询的时间,将缓存从 Postgres 中移除。

从上面的相同 SO 答案可以看出,Postgres 没有等效项,而且 Postgres 中的缓存工作方式非常不同。

因此,如果我们进行查询并运行多次,开始时可能需要一些时间,但进一步的调用主要来自缓存(来自使用 explain (analyze,buffers)。

根据上述事实,我如何衡量查询时间。

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

问题 2:如果我们运行查询 say 5 次并取平均值,结果不准确,因为它使用了缓存

问题

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

最佳答案

您可以为缓存设置尽可能低的值以减少缓存影响

您还可以停止 pg 并运行 echo 3/proc/sys/vm/drop_caches 以删除操作系统缓存

但是不需要real cache您的测试环境应该尽可能接近生产条件,并且在产品中您肯定有缓存!最好比较获取查询的不同方式或设计模式的不同方式并选择最佳的

关于database - 测量 Postgres 中的实际查询性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33262663/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com