小编hil*_*ert的帖子

保存CRUDRepository的方法很慢?

我想在我的neo4j数据库中存储一些数据.我使用spring-data-neo4j.

我的代码如下:

    for (int i = 0; i < newRisks.size(); i++) {
        myRepository.save(newRisks.get(i));
        System.out.println("saved " + newRisks.get(i).name);
    }
Run Code Online (Sandbox Code Playgroud)

我的newRisks-array包含大约60000个对象和60000个边.每个节点和边都有一个属性.这个循环的持续时间大约是15到20分钟,这是正常的吗?我使用Java VisualVM来搜索一些瓶颈,但我的平均CPU使用率为10 - 25%(4个核心),而我的堆不到一半.

有什么选择可以提升这个操作吗?


编辑:额外的是,在第myRepository.save(newRisks.get(i));一次输出即将到来之前的几分钟,jvm 第一次调用下降的fpr

第二次编辑:

类风险:

@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);
    }

    //...
}
Run Code Online (Sandbox Code Playgroud)

创造风险:

@Autowired
private Repository myRepository;

@Transactional
public Collection<Risk> makeSomeRisks() {

    ArrayList<Risk> newRisks = new ArrayList<Risk>();

    newRisks.add(new Risk("Root"));

    for (int i …
Run Code Online (Sandbox Code Playgroud)

java jvm neo4j database-performance spring-data-neo4j

5
推荐指数
2
解决办法
4193
查看次数