25분
Neo4j 성능 튜닝: 100만 노드 KG를 빠르게 다루기
Neo4j & Cypher
Neo4j 성능 튜닝: 100만 노드 KG를 빠르게 다루기
온톨로지 & Knowledge Graph > Neo4j & Cypher
학습 목표
EXPLAIN/PROFILE로 쿼리 실행 계획을 분석한다 느린 쿼리를 인덱스/패턴 재작성으로 최적화한다 대용량 데이터 로딩 베스트 프랙티스를 안다
"우리 KG 쿼리가 30초 걸려요"
제조 현장에서 가장 흔한 KG 도입 실패 원인 1위: 성능. 100만 노드까지는 거의 모든 패턴이 빠르다. 그 이상부터 차이가 벌어진다.
EXPLAIN vs PROFILE
에디터 로딩 중...
흔한 성능 문제 3가지
문제 1: 인덱스 미사용 (전체 스캔)
에디터 로딩 중...
문제 2: Cartesian Product
에디터 로딩 중...
문제 3: 깊은 가변 길이 탐색
에디터 로딩 중...
대용량 데이터 로딩 전략
에디터 로딩 중...
메모리 설정
에디터 로딩 중...
쿼리 패턴 최적화 체크리스트
- 시작점 노드에 인덱스가 있는가?
- 가변 길이 경로(
*)에 깊이 제한이 있는가? - WHERE 절이 MATCH 패턴 내부에서 가능한가? (필터 푸시다운)
- 불필요한 RETURN 컬럼은 없는가?
- LIMIT가 결과 분량을 적절히 제한하는가?
-
EXISTS {}서브쿼리로 불필요한 조인을 제거했는가?
제조 KG의 현실적 규모
에디터 로딩 중...
우리 프로젝트는 첫 번째 범주. 성능 걱정보다 모델링 품질에 집중하자.
핵심 포인트
- • PROFILE로 실행 계획 확인, NodeIndexSeek가 보이도록 인덱스 설계
- • Cartesian Product는 명확한 연결로 회피
- • 대용량 로딩은 인덱스 먼저 + 배치 트랜잭션 + APOC 활용
- • Page Cache 메모리 ≥ 데이터 크기의 80%가 황금 비율