适当的缓存,用于Cypher中的查询执行

时间:2015-03-05 23:40:45

标签: caching neo4j 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

是否有必要在运行迭代#1之后或在运行迭代#3之后(因为它启动新查询)明确清除Neo4j的缓存? 如果需要清除缓存,我该如何在2.2.0M03社区中执行此操作?

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

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

1 个答案:

答案 0 :(得分:0)

您不必明确刷新缓存。

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

计划到位后,将运行查询并返回结果。