문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

현재 작업의 성능 평가

이 페이지의 내용

  • 데이터베이스 프로파일러를 사용하여 데이터베이스에 대한 작업 평가
  • db.currentOp()을 사용하여 mongod 작업 평가
  • explain을 사용하여 쿼리 성능 평가

다음 섹션에서는 운영 성능을 평가하는 테크닉에 대해 설명합니다.

MongoDB는 데이터베이스에 대한 각 작업의 성능 특성을 보여주는 데이터베이스 프로파일러를 제공합니다. 프로파일러를 사용하여 느리게 실행되는 쿼리 또는 쓰기 작업을 찾습니다. 예를 들어 이 정보를 사용하여 어떤 인덱스를 만들지 결정할 수 있습니다.

MongoDB 4.2부터는 읽기/쓰기 작업에 대한 프로파일러 항목진단 로그 메시지 (즉, mongod/mongos 로그 메시지)는 다음을 포함합니다.

  • queryHash 동일한 쿼리 형태를 가진 느린 쿼리를 식별할 수 있습니다.

  • planCacheKey 느린 쿼리에 대한 쿼리 계획 캐시에 관해 더 많은 인사이트를 제공합니다.

버전 4.2부터 이제 복제본 세트의 보조 멤버가 느린 연산 임계값보다 오래 걸리는 oplog 항목을 기록합니다. 이러한 느린 oplog 메시지의 특성은 다음과 같습니다.

  • diagnostic log에 세컨더리 멤버에 대해 기록합니다.

  • applied op: <oplog entry> took <num>ms 텍스트와 함께 REPL 구성 요소 아래에 기록됩니다.

  • 로그 수준(시스템 또는 구성 요소 수준)에 의존하지 않습니다.

  • 프로파일링 수준에 의존하지 않습니다.

  • slowOpSampleRate 의 영향을 받습니다.

프로파일러는 느린 oplog 항목을 캡처하지 않습니다.

자세한 내용은 데이터베이스 프로파일러를 참조하세요.

db.currentOp() 메서드는 mongod 인스턴스에서 실행 중인 현재 작업에 대해 보고합니다.

cursor.explain()db.collection.explain() 메서드는 쿼리 실행에 대한 정보(예: 쿼리를 수행하기 위해 MongoDB가 선택한 인덱스 및 실행 통계)를 반환합니다. queryPlanner 모드, executionStats 모드 또는 allPlansExecution 모드에서 메서드를 실행하여 반환되는 정보의 양을 제어할 수 있습니다.

예제

{ a: 1 } 표현식과 일치하는 문서에 대한 쿼리에서 cursor.explain() 를 사용하려면 records 라는 컬렉션에서 mongosh에서 다음과 유사한 작업을 사용합니다.

db.records.find( { a: 1 } ).explain("executionStats")

MongoDB 4.2부터 설명 출력에 다음이 포함됩니다:

자세한 내용은 결과 설명, cursor.explain(), db.collection.explain()쿼리 성능 분석을 참조하세요.

← 쿼리 최적화