2013-08-02 4 views
0

neo4j의 transaction.finish()에 필요한 모든 요소는 무엇입니까?neo4j 거래 종료 시간 단축

Facebook 그래프 건물에 neo4j를 사용하고 있습니다.

4 Strings of max length 20 chars 
1 doubles 
1 long 
1 Date 
1 boolean 

Relationship 평균 20 개 그러한 개체들의리스트를 가지고 각 Node 함유 클래스의 평균 500 개 개체의 목록을 갖는다.

약 3,00,000 개의 노드가 있고 전체 관계가 동일한 순서입니다.

이러한 노드의 경우 약 300 개의 노드를 업데이트하면 업데이트가 약 50 초 걸리는 것으로 나타났습니다. 및 거래 시간 약 10 분. 메모리 사용률은 약 2.5GB, 프로세서 : 듀얼 코어 2.93GHz.

이 트랜잭션 완료 시간이 너무 높아 보입니다.

트랜잭션 완료 시간을 줄이는 방법에 대한 제안 사항을 얻을 수 있습니까?

는 편집 :

나는 그 문자열의 길이가 15650993 문자열을 내 주면서 함께 결합 모든 속성이 하나의 무거운 노드를 발견했다.

답변

1

tx.finish()에서 변경 사항은 논리 로그에 기록되고 강제로 디스크로 내려갑니다. 그런 다음 변경 사항이 데이터베이스 저장소 파일에 적용됩니다.이 파일은 디스크에 아무 것도 강제 적용하지 않으므로 해당 파일의 메모리 매핑 부분을 업데이트합니다. 이제는 제외하고 논리적 로그가 순환되고 데이터베이스 저장소 파일에 대한 모든 변경 사항이 디스크에도 적용됩니다.

큰 문자열 속성에 대해서는 15Mb도 거의 느려지지 않을 것입니다. 당신은 그것의 어떤 윤곽을 만들었습니까?