测试查询响应时间会返回有趣的结果:
对上述结果有解释吗?
如果尽管db命中率越来越高,但响应时间不是很好,那么知道查询是否已得到改进的最佳方法是什么?
答案 0 :(得分:1)
理解查询执行方式的最佳方法可能是使用PROFILE命令,这将实际解释数据库如何执行查询。这应该可以为您提供有关cypher对USING INDEX
提示的处理方式的反馈。您还可以比较同一查询的不同表述,以查看哪个结果的dbHits
更少。
对于为什么查询在各种情况下需要不同时间的原因,可能没有全面的答案。您尚未提供模型,数据或查询。它仅依赖于您的查询以外的众多因素,例如您的数据模型,cache settings,JVM decides to garbage collect at certain points,您的堆有多满,是什么类型的您拥有的索引(无论您是否使用USING INDEX
提示) - 这些只是neo4j / java级别的因素。在操作系统级别,还有许多其他可能性/突发事件使精确的性能测量变得困难。
一般情况下,当我关注这些事情时,我发现收集大量数据样本(运行查询10,0000次)然后取平均值是件好事。所有超出您控制范围的因素都倾向于在这样的样本中进行平均,但是如果您正在寻找具体的预测,确切了解下一个查询将要花多长时间,直到毫秒,可能不太现实。