neo4j查询响应时间

时间:2015-07-26 13:50:23

标签: indexing time neo4j response

测试查询响应时间会返回有趣的结果:

  1. 当连续多次执行相同的查询时,首先响应时间会变得更好直到某个点,然后在每次执行时它会变慢或者跳跃不一致。
  2. 在使用USING INDEX时运行相同的查询,而在其他时候不使用USING INDEX,返回几乎相同的响应时间范围(如第1节所述),尽管配置文件越来越好(使用使用指数)。
  3. 删除索引并重新运行查询将返回与索引存在时执行查询相同的配置文件,但查询已在没有USING INDEX的情况下执行。
  4. 对上述结果有解释吗?

    如果尽管db命中率越来越高,但响应时间不是很好,那么知道查询是否已得到改进的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

理解查询执行方式的最佳方法可能是使用PROFILE命令,这将实际解释数据库如何执行查询。这应该可以为您提供有关cypher对USING INDEX提示的处理方式的反馈。您还可以比较同一查询的不同表述,以查看哪个结果的dbHits更少。

对于为什么查询在各种情况下需要不同时间的原因,可能没有全面的答案。您尚未提供模型,数据或查询。它仅依赖于您的查询以外的众多因素,例如您的数据模型,cache settingsJVM decides to garbage collect at certain points,您的堆有多满,是什么类型的您拥有的索引(无论您是否使用USING INDEX提示) - 这些只是neo4j / java级别的因素。在操作系统级别,还有许多其他可能性/突发事件使精确的性能测量变得困难。

一般情况下,当我关注这些事情时,我发现收集大量数据样本(运行查询10,0000次)然后取平均值是件好事。所有超出您控制范围的因素都倾向于在这样的样本中进行平均,但是如果您正在寻找具体的预测,确切了解下一个查询将要花多长时间,直到毫秒,可能不太现实。