Neo4j BoltStatementResultSummary中“结果可用”和“结果消耗”之间的区别是什么?如何度量查询执行时间?

Neo4j BoltStatementResultSummary中“结果可用”和“结果消耗”之间的区别是什么?如何度量查询执行时间?,neo4j,difference,neo4j-bolt,neo4j-driver,Neo4j,Difference,Neo4j Bolt,Neo4j Driver,我试着从文件中理解,从文件中引用 结果\u可用\u之后=无 服务器获得可用结果所用的时间 结果\u消耗\u之后=无 服务器使用结果所用的时间 我仍然不理解实际的区别。 如果我想缩放程序并找到查询的执行时间,我应该考虑哪一个。如果我再运行一次相同的查询,为什么result\u available\u在之后变成0毫秒?是因为缓存吗?我尝试按照建议更改设置dbms.memory.pagecache.size=1M,但没有成功。如何仅度量查询的执行时间 我正在使用Neo4j 4.0和Neo4j pyth

我试着从文件中理解,从文件中引用

结果\u可用\u之后=无 服务器获得可用结果所用的时间

结果\u消耗\u之后=无 服务器使用结果所用的时间

我仍然不理解实际的区别。 如果我想缩放程序并找到查询的执行时间,我应该考虑哪一个。如果我再运行一次相同的查询,为什么
result\u available\u在
之后变成
0毫秒
?是因为缓存吗?我尝试按照建议更改设置
dbms.memory.pagecache.size=1M
,但没有成功。如何仅度量查询的执行时间


我正在使用Neo4j 4.0和Neo4j python驱动程序进行查询。

之后的结果可用\u是找到并提供第一个结果之前的时间。可能还有更多的结果需要从查询中查找和流式传输,但这是客户机开始返回结果的合理时间

result\u consumerd\u after
是查询的客户端找到并使用/发送所有结果的时间。此时查询已完全完成

至于在
转到0之后查看可用的
结果,这可能是两个因素的组合:

  • 由于您之前刚刚运行了查询,因此查询已被缓存,因此对于后续执行,不需要编译和计划,只需从缓存中检索并执行计划。这就排除了编译和计划时间的因素

  • 如果查询是在相同的数据上,那么接触和检索到的图形部分现在应该在pagecache中。在后续执行时,遍历速度会更快,因为遍历只需点击页面缓存即可。因此,这就考虑了磁盘I/O。这就是为什么拥有足够的RAM以允许配置pagecache以覆盖尽可能多的图形,从而避免磁盘I/O成本的原因