我对某些数据的索引结构进行了一些性能测试。我将并排比较两个索引(仍然没有决定我是否将使用2个VM)。我当然要求结果尽可能保持中立,所以我有这些问题我会很感激任何关于...的信息如何确保/控制影响测试的内容?例如,缓存效果/从一个测试到另一个测试的到达顺序将影响结果。我该如何衡量这些影响?如何制作合适的热身?或者我可以使用什么样的统计技术来消除这种影响(我不认为只有平均值就够了)?
答案 0 :(得分:3)
开始之前:
如果您只想要比较,而不是在实际使用下进行测试,我只会这样做:
如果您对缓存效果感兴趣:再次执行测试10次(或合理的任意次数)。每次测量,以考虑VM上运行的其他进程导致的可变性以及其他意外情况。
重新启动计算机,并重复test2的整个过程。有清除OS缓存的方法;但它们非常依赖于系统,并且您无法清理数据库缓存。查看See and clear Postgres caches/buffers?。
如果您在没有缓存效果时真的(或大部分)对性能感兴趣,您应该多次执行整个过程。这是缓慢而乏味的。如果您只对(很可能)缓存效果的情况感兴趣,则无需再次重新启动。
执行ANOVA(或您认为更合适的任何其他统计假设检验),以确定您的平均时间是否有统计学差异。
答案 1 :(得分:0)
尽可能保持中立,然后在数据库管理系统的同一实例上创建两个数据库,然后使用一个实例上的索引而不是另一个实例创建具有数据的相同表空间。
VM的挑战是您已经仲裁了对磁盘资源的访问权限(除非您将每个VM固定到特定的接口和磁盘集)。因此,您的仲裁模型可能因测试而异。删除仲裁的最中立的做法是在物理硬件上....在两种情况下都使用相同的硬件。