我使用Neo4j数据库(通过docker访问),具有177,000,000个节点和352,000,000个关系。这是我想要改进的示例查询:
MATCH (a:NodeA {prop1: $prop1})<-[:BA]-(b:NodeB)-[:BC]->(c:NodeC)-[:CD]->(d:NodeD)-[:DE]->(e:NodeE)
RETURN e.prop2, a.prop1, a.prop3, c.prop4, c.prop5, b.prop6;
prop1上有一个索引。
我使用python v1驱动程序来测量查询执行时间。 ResultSummary中有两个不同的时间:
我的查询内容很短&#39;时间(1到80毫秒),但非常大的消费&#39;时间(最多350000毫秒)。
我试图通过使用参数来优化查询,并且我更改了一些内存配置(增加了页面缓存大小和减小的堆大小),这导致更短的“可用”和#39;时间(1到15毫秒)以及更短的消费量#39;次(20000至250000毫秒)。 不幸的是,消费时间仍然非常高!
我的问题:
谢谢你, Reima
答案 0 :(得分:1)
为了回答您的第一个问题,我猜测响应是流式的,因此可用时间是第一个记录到达时的消耗时间是收到并处理完整结果集的时间,收到的最后一个记录和收到的第一个记录之间有一些时间差。如果我的假设结果是错误的,我道歉。 要回答第二个问题,尽可能在内存缓存中保留数据,或者如果不能选择高RAM,请使用SSD。以下链接可能有所帮助。