8분
PROFILE 로 증거 기반 튜닝
Cypher 로 답하는 CQ
PROFILE 로 증거 기반 튜닝
Cypher 로 답하는 CQ > Cypher 로 답하는 CQ
학습 목표
- 실행 계획을 읽고 인덱스 작동 여부를 판별한다
- db hits 로 두 쿼리의 비용을 비교한다
- 성능 회귀를 GD 문항으로 관리한다
성능 — PROFILE 로 증거 기반 튜닝
코스 2에서 "인덱스는 CQ의 WHERE절"이라고 했습니다. 그 판단이 맞았는지 검증하는 방법이 PROFILE입니다.
PROFILE MATCH (v:Vessel {imoNumber:"9074729"})-[:MAKES_CALL]->(pc) RETURN pc;
읽는 법 요점
- 실행 계획 첫 연산자가
NodeIndexSeek면 인덱스가 일하는 것 NodeByLabelScan(전체 스캔)이면 인덱스 누락입니다- db hits 가 비용의 단위입니다 — 같은 결과를 내는 두 쿼리의 db hits를 비교해 싼 쪽을 채택합니다
튜닝 3습관
- 앵커(시작점)를 인덱스 필드로 — 어디서 출발하느냐가 전체 비용을 정합니다
- 필터는 패턴 안으로 최대한 밀어넣기 — 다 가져와서 거르지 말고, 가져올 때 거릅니다
- 집계 전
WITH로 중간 축소 — 큰 집합을 끝까지 끌고 가지 않습니다
느린 쿼리는 감이 아니라 수치로 관리합니다
⚠️ "느린 것 같다"는 말로는 아무것도 고칠 수 없습니다. PROFILE 수치를 근거로, GD에 성능 회귀 문항(응답시간 임계)을 추가해 관리합니다. 앞 코스에서 만든 채점 하네스가 정확도뿐 아니라 성능도 지키게 되는 것입니다.
실습
- 자주 쓰는 쿼리 3개에 PROFILE을 걸고 첫 연산자를 확인합니다. LabelScan이 나오면 인덱스를 추가하고 다시 재세요.
- 같은 결과를 내는 쿼리를 두 가지 방식으로 써서 db hits를 비교합니다(예: 앵커를 Vessel로 잡을 때 vs PortCall로 잡을 때).
- 응답시간 임계를 정해 GD에 성능 문항으로 등록합니다.
에디터 로딩 중...