오늘은 MongoDB Index에 대해 알아보는 시간을 가져보겠습니다. Index의 개념부터 차근차근 알아가 볼까요? 이번 내용은 MongoDB 프로그래밍 8강 MongoDB의 Index 기능 배우기 | T아카데미를 듣고 정리한 내용입니다.
Index
- index란 디비의 검색을 빠르게 하기 위해 미리 데이터의 순서를 정리해두는 과정
- MongoDB는 고정된 스키마는 없으나 원하는 데이터 필드를 인덱스로 지정하여 검색 결과를 빠르게 하는 것이 가능합니다.
- MongoDB는 B-트리 구조로 index를 구현합니다.
- 다양한 index를 지원합니다.
주의사항
- Mongodb는 기동시 모든 데이터 파일을 메모리에 매핑합니다.
- 모든 도큐먼트, 컬렉션, 인덱스를 포함하는 모든 데이터 파일이 페이지(page)라고 부르는 4kb정도의 청크 단위로 운영체제에 의해 RAM에 적재합니다.
- 디스크 용량이 작을 경우 page fault가 자주 발생해 thrashing 현상이 발생합니다.
- 따라서 메모리에 인덱스가 위치할 수 있도록 최소화 될 필요가 있습니다.
- 적당한 index가 설정되어있지 않을 경우 질의 조건을 만족할때까지 모든 도큐먼트를 순차적으로 스캔합니다.
- 한 쿼리당 하나의 index만 유효합니다.
- _id는 기본적으로 생성되는 index로 도큐먼트를 가르키는 유일한 키값으로 사용
효율성
- 모든 index에는 유지비가 소요됩니다.
- 주로 읽기 위주의 어플리케이션에서 유용하게 사용됩니다.
- 읽기보다 쓰기 작업이 많다면 어느정도 Index를 포기하거나 Index를 위한 컬렉션을 따로 운영해야 합니다.
사용법
인덱스 생성
ensureIndex()
인덱스 확인
getIndexes()
인덱스 삭제
dropIndex()
Index 먹었는지 확인
explain()