使用以下方法清理Embedded Neo4j数据库时,我的Java Heap空间不足:
public static void cleanDb(Neo4jTemplate template) {
template.query("MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r", null);
}
现在我使用以下配置:
GraphDatabaseService graphDb = new GraphDatabaseFactory()
.newEmbeddedDatabaseBuilder(environment.getProperty(NEO4J_EMBEDDED_DATABASE_PATH_PROPERTY))
.setConfig(GraphDatabaseSettings.node_keys_indexable, "name,description")
.setConfig(GraphDatabaseSettings.node_auto_indexing, "true")
.newGraphDatabase();
如何为嵌入式Neo4j配置Java堆大小?
我可以将setConfig(GraphDatabaseSettings.pagecache_memory, "2g")
用于此目的吗?
答案 0 :(得分:1)
与之前的问题相同的答案。
我不知道它如何与Spring Data一起使用,但一般来说,您应该尝试批量删除节点/关系以避免内存不足。
Cypher查询:
MATCH (n)
WITH n LIMIT 10000
OPTIONAL MATCH (n)-[r]-()
DELETE n, r
RETURN count(n)
在您的应用程序中,您可以:
while return_value > 0:
run_delete_query()
根据您的记忆,您当然可以增加LIMIT
。