tôi muốn lưu trữ một số dữ liệu trong cơ sở dữ liệu neo4j của mình. tôi sử dụng spring-data-neo4j cho điều đó.phương pháp lưu CRUDRepository là rất chậm?
mã của tôi là như sau:
for (int i = 0; i < newRisks.size(); i++) {
myRepository.save(newRisks.get(i));
System.out.println("saved " + newRisks.get(i).name);
}
My newRisks mảng chứa khoảng 60000 đối tượng và 60000 cạnh. Mỗi nút và cạnh có một thuộc tính. Thời gian của vòng lặp này là khoảng 15 - 20 phút, điều này có bình thường không? Tôi đã sử dụng Java VisualVM để tìm kiếm một số tắc nghẽn, nhưng mức sử dụng CPU trung bình của tôi là 10 - 25% (trong số 4 lõi) và heap của tôi nhỏ hơn một nửa.
Có bất kỳ tùy chọn nào để tăng cường hoạt động này?
EDIT: thêm là, trên cuộc gọi đầu tiên của myRepository.save(newRisks.get(i));
JVM rơi assleep fpr một vài phút trước khi ra đầu tiên được đến
Second EDIT:
Lớp rủi ro:
@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);
}
//...
}
Tạo rủi ro:
@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;
}
Theo [tài liệu] (http://static.springsource.org/spring-data/data-neo4j/docs/2.0.0.RC1/api/org/springframework/data/neo4j/repository/CRUDRepository. html), CRUDRepository.save có thể lấy Iterable làm đối số. Tại sao không chỉ myRepository.save (newRisks)? – Thomas
tôi đã thử điều này và nó cũng hoạt động. nhưng, nó không nhanh hơn. vì vậy tôi có thể thấy, anh ta không chết ^^ – hilbert
bạn có thể hiển thị cấu trúc của lớp của bạn và bất kỳ tổ chức nút nào và các thực thể quan hệ mà nó đề cập đến không. Và phương pháp xây dựng các trường hợp Rủi ro của bạn? –