我有一個Spring Data Neo4j應用程序需要對Neo4j Community Edition(3.2)進行批量數據寫/讀操作。Neo4j連續數據庫事務處理問題
我的系統配置(Macbook pro) 16GB RAM,2.5 GHz Intel Core i7。
節點總數:120,000。 (屬性中的每個節點。)
我有每個節點關係。
上面的節點/關係是初始數據的一部分,我需要爲應用程序的其他部分工作。
我使用Spring Data Neo4j進行讀寫事務。每個節點依次構建其相應的500個關係。顯然,構建所有以上節點和關係需要大量時間。
示例代碼:
實體:
//Neo4j entity class
import org.neo4j.ogm.annotation.GraphId;
import org.neo4j.ogm.annotation.NodeEntity;
import org.neo4j.ogm.annotation.Relationship;
@NodeEntity
public class SamplePojo {
@GraphId
public Long id;
private String property1;
private String property2;
private Integer property3;
private Double property4;
private Integer property5;
@Relationship(type="has_sample_relationship",direction="OUTGOING")
List<SamplePojo> sampleList = new ArrayList<>();
//Getters and setters...
}
庫:
import org.springframework.data.neo4j.annotation.Query;
import org.springframework.data.neo4j.repository.GraphRepository;
@Repository
public interface SamplePojoRepository extends GraphRepository<SamplePojo> {
//save
}
服務類:
@Service
public class DataInsertion{
@Autowired
SamplePojoRepository repository;
public writeToNeo4j(List<SamplePojo> pojoList){
for(SamplePojo p : pojoList){
// Loop through more than 100,000 objects that have properties set and relationships as well
repository.save(); // save to neo4j db
}
}
}
我的觀察:
最初, 前幾分鐘,花了1200寫入操作/分鐘。
幾分鐘後,寫操作下來顯著從到100次寫操作/分鐘。
後來,它來到了10次寫操作/分鐘。
有沒有人知道爲什麼Neo4j寫操作時間減慢問題的根本原因?
請讓我知道是否需要額外的信息,將更新問題。提前致謝!
我已閱讀:https://stackoverflow.com/questions/19589687/neo4j-inserting-7k-nodes-is-slow-spring-data-neo4j-springrestgraphdatabase?rq=1但沒有一個答案准確解釋它爲什麼會發生。 –