我希望在我的neo4j数据库中存储一些数据。我使用spring-data-neo4j来实现这个目的。
我的代码如下:
我的newRisks数组包含大约60000个对象和60000条边。每个节点和边都有一个属性。
这个循环的持续时间约为15-20分钟,这正常吗? 我使用Java VisualVM搜索一些瓶颈,但我的平均CPU使用率为10-25%(4个核心),我的堆不到一半。
有什么选项可以提高此操作的速度吗?
编辑:另外,在第一次调用myRepository.save(newRisks.get(i))时,jvm会在几分钟后睡眠,然后才会输出第一个输出。
第二次编辑:
Risk类:
创建风险:
我的代码如下:
for (int i = 0; i < newRisks.size(); i++) {
myRepository.save(newRisks.get(i));
System.out.println("saved " + newRisks.get(i).name);
}
我的newRisks数组包含大约60000个对象和60000条边。每个节点和边都有一个属性。
这个循环的持续时间约为15-20分钟,这正常吗? 我使用Java VisualVM搜索一些瓶颈,但我的平均CPU使用率为10-25%(4个核心),我的堆不到一半。
有什么选项可以提高此操作的速度吗?
编辑:另外,在第一次调用myRepository.save(newRisks.get(i))时,jvm会在几分钟后睡眠,然后才会输出第一个输出。
第二次编辑:
Risk类:
@NodeEntity
public class Risk {
//...
@Indexed
public String name;
@RelatedTo(type = "CHILD", direction = Direction.OUTGOING)
Set<Risk> risk = new HashSet<Risk>();
public void addChild(Risk child) {
risk.add(child);
}
//...
}
创建风险:
@Autowired
private Repository myRepository;
@Transactional
public Collection<Risk> makeSomeRisks() {
ArrayList<Risk> newRisks = new ArrayList<Risk>();
newRisks.add(new Risk("Root"));
for (int i = 0; i < 60000; i++) {
Risk risk = new Risk("risk " + (i + 1));
newRisks.get(0).addChild(risk);
newRisks.add(risk);
}
for (int i = 0; i < newRisks.size(); i++) {
myRepository.save(newRisks.get(i));
}
return newRisks;
}