문서 메뉴
문서 홈
/
MongoDB 매뉴얼

인덱스

이 페이지의 내용

  • 사용 사례
  • 시작하기
  • 세부 정보
  • 자세히 알아보기

인덱스는 MongoDB에서 쿼리를 효율적으로 실행할 수 있도록 지원합니다. 인덱스가 없는 경우 MongoDB는 컬렉션의 모든 문서를 스캔하여 쿼리 결과를 반환해야 합니다. 쿼리에 적합한 인덱스가 있는 경우 MongoDB는 인덱스를 사용하여 스캔해야 하는 문서 수를 제한합니다.

인덱스는 쿼리 성능을 향상시키지만 인덱스를 추가하면 쓰기 작업의 성능에 부정적인 영향을 미칩니다. 쓰기 대 읽기 비율이 높은 컬렉션의 경우 각 삽입은 인덱스도 업데이트해야 하므로 비용이 많이 듭니다.

애플리케이션이 동일한 필드에서 반복적으로 쿼리를 실행하는 경우 해당 필드에 인덱스를 생성하여 성능을 개선할 수 있습니다. 예를 들어 다음 시나리오를 가정해 보겠습니다.

시나리오
인덱스 유형
인사부에서는 직원 ID로 직원을 검색해야 하는 경우가 많습니다. 쿼리 성능을 향상시키기 위해 직원 ID 필드에 인덱스를 생성할 수 있습니다.

영업 사원은 위치별로 고객 정보를 조회해야 하는 경우가 많습니다. 위치는 state, cityzipcode 같은 필드를 포함하는 내장된 객체에 저장됩니다. 해당 객체에 대한 쿼리 성능을 향상시키기 위해 location 객체에 인덱스를 생성할 수 있습니다.

참고

내장된 문서에 인덱스를 만들면 내장된 문서 전체를 지정하는 쿼리만 인덱스를 사용합니다. 문서 내의 특정 필드에 대한 쿼리는 인덱스를 사용하지 않습니다.

내장된 문서의 단일 필드 인덱스
식료품점 관리자는 재고가 부족한 품목을 파악하기 위해 이름과 수량으로 재고 품목을 자주 조회할 수 있습니다. 쿼리 성능을 향상시키기 위해 itemquantity 필드에 단일 인덱스을 생성할 수 있습니다.

MongoDB Atlas 에서 드라이버 메서드 또는 MongoDB Shell을 사용하여 인덱스를 만들고 관리할 수 있습니다. MongoDB Atlas는 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스입니다.

MongoDB Atlas에서 호스팅되는 배포의 경우, MongoDB Atlas UI 또는 Atlas CLI를 사용하여 인덱스를 생성하고 관리할 수 있습니다. MongoDB Atlas에는 느린 쿼리를 개선하기 위한 인덱스를 추천하고, 영향을 기준으로 추천 인덱스의 순위를 지정하고, 삭제할 인덱스를 권장하는 Performance Advisor도 포함되어 있습니다.

MongoDB Atlas UI 또는 Atlas CLI에서 인덱스를 생성하고 관리하는 방법을 알아보려면 인덱스 생성, 보기, 삭제 및 숨기기를 참조하세요.

MongoDB Atlas Performance Advisor에 대해 자세히 알아보려면 느린 쿼리 모니터링 및 개선을 참조하세요.

드라이버 메서드 또는 MongoDB Shell을 사용하여 인덱스를 생성하고 관리할 수 있습니다. 자세히 알아보려면 다음 리소스를 참조하세요.

인덱스는 컬렉션 데이터 세트의 일부를 탐색하기 쉬운 형식으로 저장하는 특수 데이터 구조입니다. MongoDB 인덱스는 B-트리 를 사용합니다. 데이터 구조.

인덱스는 특정 필드 또는 필드 세트의 값을 필드 값에 따라 정렬하여 저장합니다. 인덱스 항목의 순서는 효율적인 동등성 매치 및 범위 기반 쿼리 작업을 지원합니다. 또한 MongoDB는 인덱스의 순서를 사용하여 정렬된 결과를 반환할 수 있습니다.

인덱스 키 길이 또는 컬렉션당 인덱스 수와 같은 특정 제한 사항이 인덱스에 적용됩니다. 자세한 내용은 인덱스 제한 사항을 참조하세요.

MongoDB는 컬렉션 생성 중에 _id 필드에 고유 인덱스를 생성합니다. _id 인덱스는 클라이언트가 _id 필드에 동일한 값을 가진 두 문서를 삽입하지 못하도록 합니다. 이 인덱스는 삭제할 수 없습니다.

참고

샤딩된 클러스터에서 _id 필드를 샤드 키로 사용하지 않는 경우, 애플리케이션은 반드시 _id 필드에 있는 값의 고유성을 보장해야 합니다. 이 작업은 자동 생성된 ObjectId가 있는 필드를 사용하여 수행할 수 있습니다.

인덱스의 기본 이름은 밑줄을 구분자로 사용하여 인덱싱된 키와 인덱스에서의 각 키 방향(1 또는 -1)을 연결한 것입니다. 예를 들어 { item : 1, quantity: -1 }에 생성된 인덱스의 이름은 item_1_quantity_-1입니다.

생성한 인덱스의 이름은 변경할 수 없습니다. 대신 인덱스를 삭제하고 새 이름으로 다시 만들어야 합니다.

인덱스의 이름을 지정하는 방법에 대한 자세한 내용은 인덱스 이름 지정을 참조하세요.

애플리케이션은 인덱스를 작성하는 동안 컬렉션에 대한 제한된 읽기/쓰기 액세스를 포함하여 성능이 저하될 수 있습니다. 인덱스 빌드 프로세스에 대한 자세한 내용은 복제된 환경의 인덱스 빌드 섹션을 포함하여 채워진 컬렉션의 인덱스 빌드를 참조하세요.

  • MongoDB는 특정 유형의 데이터 및 쿼리를 지원하기 위해 다양한 인덱스 유형을 제공합니다. 자세히 알아보려면 인덱스 유형을 참조하세요.

  • 인덱스에서 지정할 수 있는 속성과 동작을 알아보려면 인덱스 속성을 참조하세요.

  • 인덱스를 만들 때 고려해야 할 사항을 이해하려면 인덱싱 전략을 참조하세요.

  • 인덱스가 성능에 미치는 영향에 대해 자세히 알아보려면 운영 요인 및 데이터 모델을 참조하세요.

← 맵-리듀스에서 애그리게이션 파이프라인으로의 전환