Neo4j查询执行时间:当多次执行同一查询时,似乎只有第一个查询是正确的

Neo4j查询执行时间:当多次执行同一查询时,似乎只有第一个查询是正确的,neo4j,cypher,benchmarking,execution-time,Neo4j,Cypher,Benchmarking,Execution Time,我正在使用LDBC数据集测试Neo4j 4.0.1中的执行时间,SF=1,我使用java连接Neo4j,ResultSummary.resultAvailableAfter()来获取执行时间,即获取结果并开始流式处理的时间。 但是对于同一个查询,当我第一次运行时,执行时间似乎合理,比如数百毫秒,但是当我继续运行同一个查询时,执行时间几乎为0。 我猜这是查询缓存的影响,但有没有合适的方法来测试查询执行时间并得到合理的结果 现在,我只能重新启动db以获得正确的结果。 我猜这是因为Neo4j直接缓存查

我正在使用LDBC数据集测试Neo4j 4.0.1中的执行时间,SF=1,我使用java连接Neo4j,ResultSummary.resultAvailableAfter()来获取执行时间,即获取结果并开始流式处理的时间。 但是对于同一个查询,当我第一次运行时,执行时间似乎合理,比如数百毫秒,但是当我继续运行同一个查询时,执行时间几乎为0。 我猜这是查询缓存的影响,但有没有合适的方法来测试查询执行时间并得到合理的结果

现在,我只能重新启动db以获得正确的结果。 我猜这是因为Neo4j直接缓存查询结果,如果同一个查询被多次执行,则直接获取查询结果。有没有办法避免这种情况?i、 e.让neo4j进行常规缓存(如节点和关系),而不是直接缓存查询结果。
谢谢

页面缓存很可能对您看到的结果负责(我在构建neo4j集群时与neo4j工程师进行了一些讨论。他们关于优化集群性能的建议似乎表明了这一点)。您应该将页面缓存大小设置为0或非常接近0(例如1Meg或更低)。您可以在此处阅读有关内存设置的信息

您需要更改的特定设置是

dbms.memory.pagecache.size=1M 
或者将其设置为0。显式地将其设置为一个值。不要保留此设置。neo4j可以为页缓存分配默认内存大小。更改设置后重新启动服务器/群集,查看您得到的性能数据。您还应该通过运行

:sysinfo

在运行查询之前和之后在浏览器中使用

并且没有直接的设置来告诉neo4j缓存什么。这是由服务器本身决定的


很抱歉,我没有足够的声誉点数对您的问题发表评论

页面缓存很可能对您看到的结果负责(我在构建neo4j集群时与neo4j工程师进行了一些讨论。他们关于优化集群性能的建议似乎表明了这一点)。您应该将页面缓存大小设置为0或非常接近0(例如1Meg或更低)。您可以在此处阅读有关内存设置的信息

您需要更改的特定设置是

dbms.memory.pagecache.size=1M 
或者将其设置为0。显式地将其设置为一个值。不要保留此设置。neo4j可以为页缓存分配默认内存大小。更改设置后重新启动服务器/群集,查看您得到的性能数据。您还应该通过运行

:sysinfo

在运行查询之前和之后在浏览器中使用

并且没有直接的设置来告诉neo4j缓存什么。这是由服务器本身决定的


很抱歉,我没有足够的声誉点数对您的问题发表评论

我尝试了这个,更改了设置并重新启动了数据库。但是对于同一个查询,除了第一次执行外,我仍然会在=1ms后得到
result\u available\u
。我尝试了这个方法,更改了设置并重新启动数据库。但是,对于同一个查询,除了第一次执行外,我仍然可以在=1ms之后获得
result\u available\u