소셜 그래프의 퍼포먼스 향상에 관한 어드바이스가 필요합니다. 대상 쿼리는 작은 결과 번호로 올바르게 작동합니다. 하지만 1000 개가 넘는 행이있는 큰 결과를 반환 할 수 있습니다. 사이퍼 쿼리의 대용량 반응으로 성능을 조정할 수 있습니까?Neo4j 소셜 그래프 퍼포먼스 대
사이퍼 쿼리를 사용 : 친구가 표현되는 여러 데이터 항목을 가질 수
friend1Node-[:FRIEND]->friend1Node
:
START givenFriend=node:Nodes('id:709387498'),
item=node:ItemCat1Cat2('category:a.b')
MATCH p = givenFriend-[:FRIEND]-friend1-[:FRIEND]-friend2-[:DATA]->item
RETURN p, item
Neo4j 코어 1.9.5
그래프는 연결된 친구 포함 속성을 갖는 노드로서 :
friendNode-[:DATA]->DataNode
데이터 노드에는 약 8 개의 속성이 있습니다. 그 중에는 카테고리 속성이 있습니다. 데이터 항목 노드는 범주별로 인덱싱됩니다.
친구는 노드 수 : 650,772
친구 관계 번호 : 842755
데이터 항목은 노드 수 : 5,640
와 데이터 항목에 주어진 노드 ID의 모든 경로를 선택해야 개선을 요구 쿼리 2 명의 친구를 통해 정의 된 카테고리.
givenFriend-friend1-friend2-dataItem
는 성능을 향상 호랑이 용기 수 : 경로는 다음과 같은보기가?
2.0.0으로 마이그레이션하면 db 모델과 쿼리 성능이 향상 될 수 있습니까?
** UPD
- 내가 PHP 라이브러리 https://github.com/jadell/neo4jphp 를 사용하지만 다른 변종 오픈입니다. 지금 나는 신교 (Golang)를보고있다. 또한 neo4j 확장을 사용하여 쿼리를 수행하는 방법을 고려했습니다. 대상 쿼리는 neo4j 대시 보드를 통해 테스트됩니다. 그래서 클라이언트 층은 결석했다.
- php lib의 최신 버전이 X-Stream을 사용하고 있습니다. 내 것이 아니야. 그러나 쿼리가 클라이언트없이 테스트되었으므로이 요소는 생략 할 수 있습니다.
- 질문이 좋았습니다. 쿼리를 조정했습니다. 노드는 아니지만 필요한 속성을 반환하고 성능이 약간 향상되었습니다.
- SLA에 대해 올바르게 이해하면 이러한 유형의 요청은 동시성 100 및 요청 당 허용 가능한 응답 시간 2와 함께 작동해야합니다.대시 보드를 통해 쿼리 응답 시간 = 3208ms
7000 LIMIT를 SKIP
LIMIT 3000
LIMIT 1 = 195ms
LIMIT 100 = 564ms
LIMIT 1000 = 1549ms (1) = 2051ms
응답에는 최대 13,000 개의 레코드가 포함될 수 있습니다.
답변이 ** UPD –
에 추가됩니다. 데이터 영역 리팩토링없이 성능을 향상시킬 수있는 기회가 있습니까? –