MongoDB 성능 최적화는 indexing(가장 큰 효과), 접근 패턴을 위한 schema 설계, 효율적인 쿼리, 그리고 병목을 찾기 위한 explain() 같은 도구 사용을 중심으로 합니다. 언제나처럼: 먼저 측정하고, 실제 문제 — 보통 누락된 index나 나쁜 schema 설계 — 를 고치세요.
indexing이 가장 큰 효과
db..({ : }).();
db..({ : });
MongoDB 성능 최적화는 indexing(가장 큰 효과), 접근 패턴을 위한 schema 설계, 효율적인 쿼리, 그리고 병목을 찾기 위한 explain() 같은 도구 사용을 중심으로 합니다. 언제나처럼: 먼저 측정하고, 실제 문제 — 보통 누락된 index나 나쁜 schema 설계 — 를 고치세요.
db..({ : }).();
db..({ : });
✓ 쿼리, 정렬, 필터에 쓰이는 field를 index (1순위 최적화)
✓ 다중 field 쿼리에 compound index (field 순서 유의)
✓ explain()으로 쿼리가 index를 쓰는지 검증 (COLLSCAN = 문제)
✓ 과도하게 index하지 말 것 (쓰기를 느리게 함); 실제로 쿼리하는 것을 index
✓ 함께 접근되는 데이터를 EMBED → 단일 쿼리 읽기 (조인 없음)
✓ 크거나/무한하거나/공유되는 데이터를 적절히 reference
✓ 쿼리를 중심으로 설계 (접근 패턴 원칙) → 대부분의 읽기 = 하나의 document
→ 나쁜 schema 설계(예: 많은 $lookup 필요, 거대한 document)는 MongoDB에서 거의
무엇보다 성능을 해침.
✓ PROJECTION 사용 — 필요한 field만 반환 (전송 데이터 감소)
✓ 일찍 필터; covered query 사용 (index의 모든 field → document 가져오기 없음)
✓ aggregation pipeline에서 $match(와 $limit)를 일찍 배치하여 pipeline 통과 데이터 감소
✓ sharded collection에서 shard key 없이 쿼리하는 것 회피 (scatter-gather)
✓ limit/페이지네이션 사용; 깊은 skip()보다 범위 기반 선호
✓ working set을 RAM에 — 자주 접근되는 데이터 + index가 메모리에 맞아야 함
(MongoDB는 RAM에 캐시; 디스크 접근은 훨씬 느림)
✓ 연결 풀링 (드라이버가 기본적으로 풀링)
✓ 모니터링: explain(), MongoDB profiler, Atlas Performance Advisor (index 제안)
✓ 크거나 무한한 배열 회피; 시계열에는 bucket 패턴 고려
MongoDB 성능 최적화는 MongoDB 애플리케이션을 빠르게 유지하는 데 가치 있는 senior 수준 지식이며, 올바른 접근 — 측정 주도이며 indexing과 schema 설계를 가장 큰 지렛대로 — 을 이해하는 것이 효과적인 최적화에 중요합니다.
가장 큰 단일 효과는 indexing입니다(관계형 데이터베이스와 동일): 누락된 index는 collection 스캔(COLLSCAN — 모든 document 확인, 데이터가 커지면 치명적으로 느림)을 초래하고, 쿼리/정렬/필터되는 field에 적절한 index를 추가하면 이를 빠른 index 스캔으로 바꿉니다 — **explain()**으로 쿼리가 index를 사용하는지 검증(COLLSCAN 문제 발견)하는 것이 핵심 진단 기술입니다. 접근 패턴을 위한 schema 설계는 MongoDB에서 SQL보다 어쩌면 더 영향력이 큽니다: 쿼리를 중심으로 설계(함께 접근되는 데이터를 embed하여 단일 쿼리 읽기, 적절히 reference)하여 대부분의 읽기가 하나의 document를 치도록 하고, 나쁜 설계(많은 $lookup 필요, 거대한 document)는 성능을 크게 해칩니다 — schema 설계를 MongoDB의 유연성에 고유한 최상위 최적화 지렛대로 만듭니다. 쿼리 최적화(필요한 field만 반환하는 projection, covered query, 데이터 흐름을 줄이기 위해 aggregation pipeline에서 $match/$limit를 일찍 배치, sharded collection에서 scatter-gather 회피, 효율적 페이지네이션)와 working set이 RAM에 맞도록 보장(자주 접근되는 데이터와 index가 메모리에 캐시됨, 디스크가 훨씬 느리므로)이 도구를 완성합니다.
측정 주도 규율(explain(), profiler, Atlas Performance Advisor로 실제 병목 — 보통 누락된 index나 나쁜 schema — 을 찾아 고침)이 필수적입니다.
MongoDB 성능이 애플리케이션에 중요하고 적절한 최적화(indexing, schema 설계, 쿼리 효율, working set RAM)가 그것을 대규모에서 빠르게 유지하므로, MongoDB 성능 최적화 — 특히 indexing(explain()으로 검증)과 접근 패턴 주도 schema 설계를 가장 큰 지렛대로 — 를 이해하는 것은 성능 좋은 MongoDB 애플리케이션을 운영하는 데 가치 있는 senior 수준 지식이며, 자주 관련되는 관심사이자 MongoDB를 체계적으로 최적화하는 능력을 보여주는 주제입니다.
주니어부터 시니어까지 상세한 답변이 포함된 IT 면접 질문 라이브러리.
후원하기