有没有办法加快Neo4j图形的更新速度?
我有一个Neo4j(3.5)中的图形,包含大约12m个节点和16m条边。该图在RHEL虚拟机上运行,该虚拟机具有8个vCPU内核和8gb内存 在对图表(如下图)执行更新时,我发现更新大约需要15秒才能完成 我已经查看了Neo4j索引建议,但找不到任何迹象表明它将加快更新速度。图的模式显示我已经在匹配属性上创建了索引<代码>:在线责任(责任ID)有没有办法加快Neo4j图形的更新速度?,neo4j,cypher,Neo4j,Cypher,我有一个Neo4j(3.5)中的图形,包含大约12m个节点和16m条边。该图在RHEL虚拟机上运行,该虚拟机具有8个vCPU内核和8gb内存 在对图表(如下图)执行更新时,我发现更新大约需要15秒才能完成 我已经查看了Neo4j索引建议,但找不到任何迹象表明它将加快更新速度。图的模式显示我已经在匹配属性上创建了索引:在线责任(责任ID) MATCH (n {`Liability ID`: {liability_id}}) SET n.`Creditor Reference`= {referen
MATCH (n {`Liability ID`: {liability_id}})
SET n.`Creditor Reference`= {reference},
n.`Liability Type`= {liability_type},
n.`Liability Sub-Type`= {liability_subtype}
RETURN n.`Liability ID`
感谢您的帮助
编辑:我还尝试用以下模式替换约束的索引:
:在线责任(责任ID)(用于唯一性约束)
,这并没有加快更新速度,反而使更新速度慢了1秒 由于索引与标签和属性名称相关联,为了使用索引,必须在匹配模式中指定标签和属性名称。如果未在模式中指定标签,则Cypher将被迫扫描所有节点,这将阻止它使用索引
例如,这将导致Cypher planner生成一个使用索引的计划(唯一真正的更改在MATCH
子句中):
啊!!非常好,通过指定标签,更新时间从10-15秒增加到了10-20毫秒。
MATCH (n:Liability {`Liability ID`: {liability_id}})
SET
n.`Creditor Reference` = {reference},
n.`Liability Type` = {liability_type},
n.`Liability Sub-Type` = {liability_subtype}
RETURN n.`Liability ID`;