Chcę przechowywać niektóre dane w mojej bazie danych neo4j. używam do tego danych sprężynowych-neo4j.metoda zapisu CRUDRepository jest bardzo powolna?
mój kod jest jak następuje:
for (int i = 0; i < newRisks.size(); i++) {
myRepository.save(newRisks.get(i));
System.out.println("saved " + newRisks.get(i).name);
}
Moja newRisks-tablica zawiera około 60000 i 60000 krawędziach obiektów. Każdy węzeł i krawędź ma jedną właściwość. Czas trwania tej pętli wynosi około 15 - 20 minut, czy to normalne? Użyłem Java VisualVM do wyszukiwania niektórych wąskich gardeł, ale moje średnie użycie procesora było 10 - 25% (z 4 rdzeni), a mój stert był mniej niż w połowie pełny.
Czy są jakieś opcje, aby zwiększyć tę operację?
EDIT: dodatkowy jest na pierwszym wezwaniu myRepository.save(newRisks.get(i));
JVM spada assleep FPR kilka minut przed pierwszym wyjściem nadchodzi
Druga Edycja:
Ryzyko Klasa:
@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);
}
//...
}
Tworzenie ryzyka:
@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;
}
Zgodnie z [dokumentacją] (http://static.springsource.org/spring-data/data-neo4j/docs/2.0.0.RC1/api/org/springframework/data/neo4j/repository/CRUDRepository. html), CRUDRepository.save może przyjąć Iterable jako argument. Dlaczego nie tylko myRepository.save (newRisks)? – Thomas
Próbowałem tego i działa również. ale nie jest szybszy. więc widzę, że on nie jest martwy ^^ – hilbert
czy mógłbyś pokazać strukturę swojej klasy i dowolne węzły-encje i encje-relacje, do których się odnosi. A metoda budowy twoich instancji Risk? –