2013-11-26 4 views
0

SQL Server 데이터베이스의 데이터를 Neo4j 데이터베이스로 복사하는 장기 실행 프로그램이 있습니다. 현재 12 시간 이상 걸립니다. SQL Server 데이터베이스의 각 레코드에 대해이 프로그램은 Neo4j에 대한 수십 개의 액세스를 수행해야합니다. 나는 이것을 바꿀 수 없다.Azure에서 Neo4j 실행 속도 향상

프로그램과 Neo4j는 Azure 작업자 역할로 실행됩니다. Neo4j는 자체 서비스로 운영됩니다.

우리는 중간 시스템에서 업그레이드 프로세스의 속도를하려고 (2 × 1.6GHz의 CPU를, 3.5GB RAM, 490기가바이트 저장)를 대형 기계 (4 × 1.6GHz의 CPU를, 7기가바이트 RAM, 1,000기가바이트 저장) 그러나 이것은 프로그램을 가속화하지 않았다.

Neo4j에 대한 액세스 수를 변경할 수는 없지만 각 액세스의 속도를 높이는 방법이 필요합니다. Azure 작업자 역할로 실행되는 Neo4j 액세스 속도 향상에 대한 제안은 크게 감사 할 것입니다.

+0

Azure 작업자 역할로 호스팅되는 Neo4j 서비스에 대한 REST API 호출을한다고 가정하면 데이터 마이그레이션에서 실행중인 HTTP 요청 볼륨에 문제가 발생합니다. 이 때문에 병목이 네트워크 계층에 있기 때문에 계산 인스턴스를 확장하는 데 아무런 이점이 없습니다. 네가 네 애플리케이션과 Neo4j 서비스를 같은 인스턴스에서 호스팅한다고해도 이해가된다. 이렇게하면 몇 가지 디버깅을 수행하여 호출 횟수 제한을 이해할 수 있습니다. 어떤 데이터 이전 프로세스를 사용하고 있습니까? –

+0

또한 SQL에서 마이그레이션하는 레코드의 시간당 볼륨은 어느 정도입니까? 일괄 API를 사용하고 있습니까 아니면 단 한번의 호출을하고 있습니까? 좀 더 나은 도움을 줄 수 있도록 몇 가지 코드 예제를 보여줄 수 있습니까? 또한 SQL 서버는 어디에 있습니까? 어떤 종류의 쿼리를 SQL로 만들고 있습니까? –

답변

0

무거운 물건을 쓰기 위해서는 가능한 경우 저장소 파일을 RAM에 저장할 수 있도록 mmio를 조정해야합니다. 이 여기에 몇 가지 팁을 참조하십시오 http://docs.neo4j.org/chunked/milestone/configuration-io-examples.html

을 당신은 RAM을 업그레이드 말하지만, 당신은 또한 JVM 힙 설정을 조정해야 : 당신이 쓰기의 많은없이 독서를하고 있다면 당신은 수도, http://docs.neo4j.org/chunked/stable/configuration-jvm.html

을 마지막으로 캐시를 사용 불가능으로 설정하여 neo의 오브젝트 캐시가 변경되지 않도록하십시오. 혼합 된 읽기/쓰기 시나리오에서 이것은 나쁜 생각이지만 무거운 쓰기 시나리오에서는 좋은 처리량 증가를 보았습니다.

어쨌든 코드 샘플, 사이퍼 쿼리 및 구성 파일은 물론 일부 성능 통계도 제공해주십시오.