【问题标题】:Neo4j Out of Memory Error while deleting duplicate relationships删除重复关系时出现 Neo4j 内存不足错误
【发布时间】:2020-05-05 20:40:11
【问题描述】:

我的 neo4j 数据库中有超过 1200 万条关系记录。在错误地导入数据时,创建了一些我现在想删除的重复关系。每当我执行以下查询时

MATCH (a:person)-[r:IS_A_FRIEND]->(b:person)
WITH a, b, COLLECT(r) AS rr
WHERE SIZE(rr) > 1
WITH rr
LIMIT 1000
FOREACH (r IN TAIL(rr) | DELETE r)

出现 Neo.TransientError.General.OutOfMemoryError 错误。 我有以下 neo4j conf

dbms.memory.heap.initial_size=8G
dbms.memory.heap.max_size=16G

我怎样才能摆脱这个错误并删除重复的关系

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    以下查询可能执行而不会耗尽内存:

    MATCH (a:person)-[:IS_A_FRIEND]->(b)
    FOREACH(x IN TAIL([(a)-[r:IS_A_FRIEND]->(b) | r]) | DELETE x)
    

    此特定查询的 PROFILE(在 neo4j 4.0.3 中)未显示 Eager 操作,这可能是导致您的 OOM 情况的原因。

    【讨论】:

      猜你喜欢
      • 2014-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-26
      • 2012-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多