쓰기 작업 성능
Indexes
컬렉션의 각 인덱스는 쓰기 작업 성능에 어느 정도의 오버헤드를 추가합니다.
컬렉션 에 대한 각 insert
또는 delete
쓰기 (write) 작업에서 MongoDB 는 대상 컬렉션 의 각 인덱스 에 해당 문서 키를 삽입하거나 제거합니다. update
작업은 업데이트의 영향을 받는 키에 따라 컬렉션 의 인덱스 하위 집합을 업데이트 할 수 있습니다.
일반적으로 인덱스가 읽기 작업에 제공하는 성능 향상은 삽입 페널티를 감수할 가치가 있습니다. 하지만 가능하면 쓰기 성능을 최적화하려면 새 인덱스를 만들 때 주의를 기울이고 기존 인덱스를 평가하여 쿼리에서 실제로 이러한 인덱스를 사용하는지 확인해야 합니다.
인덱스 및 쿼리에 대해서는 쿼리 최적화를 참조하세요. 인덱스에 대한 자세한 내용은 인덱스 및 인덱싱 전략을 참조하세요.
저널링
충돌 발생 시 내구성을 제공하기 위해 MongoDB는 디스크 상의 저널에 미리 쓰기 로그를 사용합니다. MongoDB는 인메모리 변경 사항을 먼저 디스크 상의 저널 파일에 기록합니다. 데이터 파일에 변경 사항을 적용하기 전에 MongoDB가 종료되거나 오류가 발생하는 경우 MongoDB는 저널 파일을 사용하여 데이터 파일에 쓰기 작업을 적용할 수 있습니다.
일반적으로 저널이 제공하는 내구성 보장이 추가 쓰기 작업의 성능 비용보다 크지만, 저널과 성능 간의 다음과 같은 상호 작용을 고려하세요.
저널과 데이터 파일이 동일한 차단 장치에 있는 경우, 데이터 파일과 저널은 한정된 수의 사용 가능한 I/O 리소스를 두고 경쟁해야 할 수 있습니다. 저널을 별도의 장치로 이동하면 쓰기 작업 용량이 늘어날 수 있습니다.
애플리케이션에서 ,
j option
을 포함하는 쓰기 고려를 지정하면mongod
이(가) 저널 쓰기 사이의 기간을 감소시켜 전체 쓰기 부하가 증가할 수 있습니다.저널 쓰기 사이의 지속 시간은
commitIntervalMs
런타임 옵션을 사용하여 구성할 수 있습니다. 저널 커밋 간격을 줄이면 쓰기 작업 수가 늘어나 MongoDB의 쓰기 작업 용량이 제한될 수 있습니다. 저널 커밋 사이의 시간을 늘리면 전체 쓰기 작업 수가 줄어들 수 있지만 실패 시 저널이 쓰기 작업을 기록하지 않을 가능성도 커집니다.
저널링에 대한 자세한 내용은 저널링을 참조하세요.