首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PostgreSQL性能测试-预防措施?

PostgreSQL性能测试-预防措施?
EN

Stack Overflow用户
提问于 2017-01-29 22:16:58
回答 2查看 628关注 0票数 2

我对一些数据的索引结构进行了一些性能测试。我将比较两个索引并排(仍然没有决定,如果我将使用2个VM)。当然,我要求结果尽可能中立,所以我有这类问题,我希望能对……提出任何意见。我如何确保/控制影响测试的因素?例如,从一个测试到另一个测试的缓存效果/到达顺序将影响结果。我如何衡量这些影响?我如何创造一个合适的热身?或者我可以用什么样的统计技术来消除这些影响(我不认为仅仅平均是足够的)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-29 22:56:15

在开始之前:

  1. 确保您的表和索引是刚刚创建和填充的。这避免了与分散有关的问题。否则,如果一个测试中的数据严重支离破碎,而另一个没有,您可能不会将苹果与苹果进行比较。
  2. 确保您的表是正确的ANALYZEd。这确保查询计划器在所有情况下都有正确的统计信息。

如果你只是想要一个比较,而不是一个实际使用的测试,我会这样做:

  1. 冷启动你的(虚拟)机器。等待一个合理但固定的时间(比如5分钟,或者任何对您的系统来说是合理的),这样所有的启动进程都已经发生,并且不会干扰DB的执行。
  2. 使用index1执行测试,并测量时间(这是没有数据库或操作系统缓存的任何内容的时间)。
  3. 如果您对有缓存效果时的结果感兴趣:再次执行测试10倍(或者是合理大小的任何一次)。度量每一次,以考虑到由于VM上运行的其他进程以及其他意外情况而引起的可变性。
  4. 重新启动计算机,并对test2重复整个过程。有一些方法可以清理OS缓存;但是它们与系统非常相关,而且您没有方法来清理数据库缓存。检查看到并清除Postgres缓存/缓冲区?
  5. 如果在没有缓存效果的情况下,您真的(或者主要)对性能感兴趣,那么您应该多次执行整个过程。又慢又乏味。如果您只对存在(很可能)有缓存效果的情况感兴趣,则不需要再次重新启动。
  6. 执行一个诺瓦 (或者任何其他你认为更适合的统计假设测试)来决定你的平均时间在统计上是否不同。

您可以在关于NULL与CHECK(xx NULL)的问题。的答案中看到一个执行多个测试的示例。

票数 4
EN

Stack Overflow用户

发布于 2017-01-30 01:36:15

尽可能中立,然后在数据库管理系统的同一个实例上创建两个数据库,然后使用一个实例而不是另一个实例使用索引,用数据创建相同的表空间。

VM面临的挑战是,您可以仲裁对磁盘资源的访问(除非将每个VM固定在特定的接口和磁盘集上)。正因为如此,您的仲裁模型可能因测试而异。在这两种情况下,最中立的过程是在物理hardware....and上删除仲裁,硬件是相同的。

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

https://stackoverflow.com/questions/41926567

复制
相关文章

相似问题

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