嵌入式Neo4j Java清理数据库时空间不足

时间:2015-07-25 09:16:03

标签: neo4j spring-data-neo4j

使用以下方法清理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")用于此目的吗?

1 个答案:

答案 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