我在Django中有一个API,其结构类似于 -
FetchData():
run cypher query1
run cypher query2
run cypher query3
return
当我在neo4j查询窗口中运行这些查询时,大约需要100ms。但是,当我调用此API时,query1需要 1s ,其他2需要 100ms 才能执行。每次调用API时都会重复此模式。
任何人都可以解释在这里应该做什么来在预期的时间内运行第一个查询。
答案 0 :(得分:1)
Neo4j尝试将图表缓存在RAM中。在第一次调用时,缓存尚未预热,因此执行IO操作需要更长时间。后续调用不会命中IO并直接从RAM中读取。
答案 1 :(得分:0)
这听起来很奇怪。只有在关闭服务器或数据库时才需要加热缓存,而不是在每次API调用之后。您使用的是参数化查询吗?我唯一能想到的可能是每组查询都不同,导致它们必须重新解析和重新规划。