$currentOp
집계 단계는 MongoDB 에서 현재 실행 모든 작업에 대한 정보를 제공합니다. 애플리케이션 에 성능 문제가 발생하는 경우 이 단계를 중심으로 집계 파이프라인 빌드 느린 쿼리 및 유사한 문제를 모니터 할 수 있습니다.
이 작업에 관한 정보
데이터베이스 프로파일러
이 작업은 $currentOp
를 사용하여 현재 애플리케이션에서 실행 중인 느린 쿼리를 식별합니다. 지정된 기간 내에 느린 쿼리를 모두 찾으려면 프로파일러를 사용하는 것이 좋습니다.
프로파일러 | 설명 |
---|---|
Atlas 고객에게 산점도 차트 제공하여 느린 쿼리와 성능 이상값을 쉽게 식별할 수 있습니다. | |
쿼리 성능 정보를 컬렉션 에 저장하여 특정 성능 문제가 있는 쿼리를 MongoDB 쿼리 할 수 있습니다. |
Atlas 쿼리 프로파일러 와 데이터베이스 프로파일러 모두 서버 성능에 영향을 미치고, 디스크 공간을 사용하며, 암호화됨 필드 주변의 쿼리 메타데이터 노출할 수 있습니다. 활성화하기 전에 성능 및 보안에 미치는 영향을 고려하세요.
설명 쿼리
이 작업 성능 문제가 있는 쿼리를 식별합니다. 성능 문제가 있는 쿼리를 이미 알고 있는 경우 느린 쿼리 설명 을 참조하여 문제를 해결하세요.
단계
현재 작업을 조회합니다.
$currentOp
집계 단계를 사용하여 MongoDB 에서 현재 작업을 조회 .
db.getSiblingDB("admin").aggregate( [ { $currentOp: { allUsers: true } }, { $match: { secs_running: { $gt: 2 } } }, { $sort: { secs_running: 1 } } ] )
[ { "opid": "12345", "secs_running": 5, "active": true, "ns": "sample_mflix.movies", "command": { "find": "movies", "filter": { "title": { "$regex": "The" } } }, "planSummary": "COLLSCAN", "locks": { ... }, "client": "203.0.113.25:43210" } ]
이 집계 파이프라인 클러스터 의 모든 현재 작업을 검색합니다. 그런 다음 $match
집계 단계에서는 2초 이상 실행 된 작업으로 작업을 필터링합니다. 이를 통해 지정된 기간 내에 실행 되는 쿼리를 필터하다 할 수 있습니다. 애플리케이션 및 데이터베이스 요구 사항에 맞게 값을 조정합니다.
$sort
단계는 optime 오름차순으로 결과를 정렬합니다.
활동을 확인합니다.
currentOp.active
필드 봅니다. currentOp.active
이(가) true
인 경우, MongoDB 작업이 현재 실행 을 나타냅니다.
장기 실행 작업을 중지하려면 db.killOp()
메서드를 사용하여 지정된 opid
를 중지합니다.
잠금을 확인합니다.
currentOp.waitingForLock
필드 봅니다. currentOp.waitingForLock
가 true
인 경우 서버 또는 클러스터 에서 실행 다른 작업이 쿼리 차단하고 있는 것입니다.
차단된 작업을 중지하려면 db.killOp()
메서드를 사용하여 지정된 opid
를 중지합니다.
계획 요약을 확인합니다.
currentOp.planSummary
필드의 값을 확인합니다.
IXSCAN
- 쿼리 인덱스 스캔을 수행했음을 나타냅니다.
COLLSCAN
- 쿼리 전체 컬렉션 스캔 수행했음을 나타냅니다. 이 문제를 해결하려면 인덱스를 생성하세요.
쿼리 설명합니다.
$currentOp
집계 단계에서 추가 조사가 필요한 쿼리 반환하는 경우 explain()
메서드를 사용하여 쿼리 계획 및 실행 통계를 분석 .
자세한 내용은 느린 쿼리 설명을 참조하세요.