Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java neo4j在一个迭代器上处理长事务_Java_Neo4j - Fatal编程技术网

Java neo4j在一个迭代器上处理长事务

Java neo4j在一个迭代器上处理长事务,java,neo4j,Java,Neo4j,我想检查一下图中的所有“用户”节点,并对它们执行一些操作 问题是我有太多的“用户”节点,并且我不能将它们全部保存在堆上 所以,做一些类似于: try (Transaction tx = graphDb.beginTx()) { Iterator<Node> n_column = autoNodeIndex.get( "type", "user" ); while (n_column.hasNext()) { //create relationship

我想检查一下图中的所有“用户”节点,并对它们执行一些操作

问题是我有太多的“用户”节点,并且我不能将它们全部保存在堆上

所以,做一些类似于:

try (Transaction tx = graphDb.beginTx())
{
   Iterator<Node> n_column = autoNodeIndex.get( "type", "user" );   


   while (n_column.hasNext()) {
     //create relationship for node...
   }
   tx.success();
}
try(事务tx=graphDb.beginTx())
{
迭代器n_column=autoNodeIndex.get(“类型”、“用户”);
while(n_column.hasNext()){
//为节点创建关系。。。
}
成功();
}
将导致GC开销异常

如何在同一迭代器上将其拆分为几个事务


我考虑过嵌套事务,但手册中的说法不同。嵌套事务将本地内存滚动到事务的顶部

只需添加一个计数器,然后每隔50000个节点提交并启动一个新事务

   Transaction tx = graphDb.beginTx();
   Iterator<Node> n_column = autoNodeIndex.get( "type", "user" );   

   int counter=0;
   while (n_column.hasNext()) {
     //create relationship for node...
     if (++counter % 50000 == 0) {
        tx.success(); tx.close();
        tx = graphDb.beginTx();
     }
   }
   tx.success(); 
   tx.close();
Transaction tx=graphDb.beginTx();
迭代器n_column=autoNodeIndex.get(“类型”、“用户”);
int计数器=0;
while(n_column.hasNext()){
//为节点创建关系。。。
如果(++计数器%50000==0){
发送成功();发送关闭();
tx=graphDb.beginTx();
}
}
成功();
tx.close();

有效!我想当我关闭事务时,它会杀死迭代器。我想不是…我的数据库变得更大了,现在它有1000万用户。所以现在,它不再起作用了。。。在大约60k个用户之后,我在java堆上再次出现“outOfMemory”错误。我认为每次关闭事务时,关系都会被清除,但迭代器会继续在堆上保存数据。我怎样才能避免呢?