在 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 都会检查该查询字符串(独立于参数)的查询计划是否在查询计划缓存中。如果是这样,它将被重用,否则查询计划将被构建并放入缓存中。
计划就绪后,查询 运行 并返回结果。
我正在 运行 嵌入 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 都会检查该查询字符串(独立于参数)的查询计划是否在查询计划缓存中。如果是这样,它将被重用,否则查询计划将被构建并放入缓存中。
计划就绪后,查询 运行 并返回结果。