0

我尝试从这里的文档中理解,引用文档

result_available_after = None 服务器获得结果所需的时间。

result_consumed_after = None 服务器消耗结果所用的时间。

我仍然不明白实际的区别。如果我想扩展程序并找到查询的执行时间,我应该考虑哪一个。如果我再次运行相同的查询,为什么result_available_after会变成这样?0 ms是因为缓存吗?我尝试按照此处dbms.memory.pagecache.size=1M的建议更改设置,但没有奏效。如何仅测量查询的执行时间?

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

4

1 回答 1

1

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

result_consumed_after是所有结果被发现并被/发送到进行查询的客户端的时间。至此,查询完全结束。

至于看到result_available_aftergo to 0,这可能是两件事的结合:

  1. 由于您之前刚刚运行过查询,因此查询已被缓存,因此对于后续执行,无需编译和计划,只需从缓存中检索并执行计划即可。这会影响编译和规划时间。

  2. 如果查询是针对相同的数据,那么触摸和检索的图表部分现在应该在页面缓存中。在随后的执行中,遍历会更快,因为遍历只需要命中页面缓存。所以这会排除磁盘 I/O。这就是为什么最好有足够的 RAM 以允许将 pagecache 配置为覆盖尽可能多的图形,以避免磁盘 I/O 的成本。

于 2020-03-24T21:09:06.807 回答