Neo4j——删除一个模式标签需要很长时间



我运行这个:

MATCH (b:Bisac) WHERE (b.bisac_code =~ '.*000000') SET b:Main;

现在我想删除标记为Main的节点。查询

match (m:Main)-[r]-() delete r, m;

需要很长时间,并且只有52个节点需要删除。我哪里做错了?

虽然这些删除永远不会完成,但没有其他查询返回。数据库引擎似乎不再响应了。

过了一会儿,像这样失败:

match (m:Main)-[r]-() delete r, m;
Error occurred in server thread; nested exception is: 
    java.lang.OutOfMemoryError: Java heap space

再次提到:当这是无休止地运行时,没有其他查询返回,没有其他会话可能被打开。显然,数据库的工作方式就像一个单用户/单连接/单线程系统。

首先要确保只有52:

MATCH (m:Main) RETURN count(m)

除此之外,您可以尝试以下查询:

MATCH (m:Main) OPTIONAL MATCH m-[r]-() DELETE r, m;

虽然我不太确定为什么另一个需要这么多资源。

如果我是你,我会尝试将关系和节点删除分开,运行两个单独的查询:

match (m:Main)-[r]-() delete r;
match (m:Main) delete m;

不确定这是不是一个好主意,但我怀疑Neo4j必须推迟删除您的第一个查询类型中的关系,并将某种关系标记为"to_be_deleted"。数据库中有这么多的关系,这可能会导致问题。

我更改了neo4j-wrapper.conf文件中的以下参数。

wrapper.java.initmemory=10240
wrapper.java.maxmemory=10240

我也删除了所有的东西,重新加载没有SET Main。我永远不会再使用它,因为它不清楚如何消除时,不再需要

最新更新