gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 09:15:46 25 4
gpt4 key购买 nike

我想遍历图表中的所有“用户”节点并对它们执行一些操作。

问题是我有太多“用户”节点,我无法将它们全部保存在堆上。

所以,做类似的事情:

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


while (n_column.hasNext()) {
//create relationship for node...
}
tx.success();
}

会导致GC开销异常。

我如何将它拆分为几个事务,但在同一个迭代器上?

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

最佳答案

只需添加一个计数器,每 50.000 个节点提交并启动一个新事务。

   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();

关于java - neo4j 在一个迭代器上处理一个长事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19745725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com