在 Cypher 中执行查询的适当缓存

Appropriate caching for query execution in Cypher

我正在 运行 嵌入 Neo4j 数据库的参数化 Cypher 查询。 每个查询都是 运行 具有不同的输入值,比方说一个 ID。对于每个输入值,查询运行 10次。

举个例子:

it#1 - Query 1, input 1, 10 times
it#2 - Query 1, input 2, 10 times
it#3 - Query 1, input 3, 10 times
it#4 - Query 2, input 1, 10 times
it#5 - Query 2, input 2, 10 times

是否有必要在 运行ning 迭代 #1 之后或 运行ning 迭代 #3 之后(因为它开始新查询)显式清除 Neo4j 的缓存? 如果需要清缓存,在2.2.0M03 Community中如何操作?

另一件事是我运行查询如下:

initialize db
   for each input n
   i=0
      while(i<10)
         Result r;
         result = graphDb.execute(query,mapWithInputn)
         print result.resultAsString()
         result.close()
      end   
   end
close db

您不必显式刷新缓存。

Neo4j中的查询计划缓存不缓存查询结果,而是缓存查询计划。每次调用 execute 时,Neo4j 都会检查该查询字符串(独立于参数)的查询计划是否在查询计划缓存中。如果是这样,它将被重用,否则查询计划将被构建并放入缓存中。

计划就绪后,查询 运行 并返回结果。