多线程中的neo4j Session.clear
当我在Neo4j中插入大量数据时,Neo4j出现内存问题。在每次大的治疗后添加多线程中的neo4j Session.clear,neo4j,spring-data-neo4j,spring-data-neo4j-4,Neo4j,Spring Data Neo4j,Spring Data Neo4j 4,当我在Neo4j中插入大量数据时,Neo4j出现内存问题。在每次大的治疗后添加会话.clear()后,情况都有所好转 我计划为每个插件制作不同的线程。是否必须使用会话.clear()结束所有线程?会产生什么后果?会话。建议在批处理操作期间使用clear()释放内存 稍微分析一下会话正在做什么可能有助于理解为什么应该清除它 假设您总共加载了1000个实体。在会话的每次保存调用中,它都必须检查所有实体是否存在可能的更改,并在需要时保留这些更改(因此检查属性是否更改,以及对象图中的任何关系引用是否也更
会话.clear()
后,情况都有所好转
我计划为每个插件制作不同的线程。是否必须使用会话.clear()结束所有线程?会产生什么后果?会话。建议在批处理操作期间使用clear()
释放内存
稍微分析一下会话正在做什么可能有助于理解为什么应该清除它
假设您总共加载了1000个实体。在会话的每次保存调用中,它都必须检查所有实体是否存在可能的更改,并在需要时保留这些更改(因此检查属性是否更改,以及对象图中的任何关系引用是否也更改)
如果不处理这些实体,这将非常昂贵
但是,关于您的问题,如果会话不是在线程之间共享的(即每个线程有一个不同的会话),那么在线程中执行大量操作后,可以安全地清除会话
在批插入过程中,您可能需要查看我对这个问题的回答,以了解更多的性能注意事项:注意会话不是线程安全的,因此请确保每个线程有一个会话。Thabks很多。如何使用neo4j data spring在不同线程中使用不同会话?