문서 홈 → 애플리케이션 개발 → MongoDB 매뉴얼
db.currentOp()
정의
db.currentOp()
데이터베이스 인스턴스의 진행 중인 작업에 대한 정보가 포함된 문서 를 반환합니다.
db.currentOp()
메서드는 데이터베이스 명령currentOp
를 래핑합니다.명령과
mongosh
해당 헬퍼$currentOp
currentOp
db.currentOp()
메서드 대신애그리게이션 단계를 사용합니다.참고
MongoDB 5 부터 시작.0,
$currentOp
애그리게이션 단계는mongosh
와 함께 헬퍼 메서드db.currentOp()
를 실행할 때 사용됩니다이를 감안할 때 5.0 버전의 셸 및 mongosh의 경우
db.currentOp()
결과 세트에는 이전 레거시mongo
버전의 문서에 대한 16MB BSON 문서 반환 크기 문서 반환 크기 제한이 적용되지 않습니다.
구문
db.currentOp()
의 형식은 다음과 같습니다.
db.currentOp(<operations>)
db.currentOp()
는 다음과 같은 선택적 인수를 사용할 수 있습니다.
행동
db.currentOp()
는 필터 문서 또는 부울 매개변수를 받을 수 있습니다.
필터 문서를 db.currentOp()
에 전달하면 출력은 필터와 일치하는 현재 작업에 대한 정보만 반환합니다. 필터 문서에는 다음이 포함될 수 있습니다.
필드 | 설명 |
---|---|
"$ownOps" | 부울. 사용자는 언제든지 |
"$all" | 부울. 문서에 출력 필드 조건과 함께 |
<필터> | 출력 필드 에 필터 조건을 지정합니다. 예제를 참조하세요. 문서에 출력 필드 조건과 함께 |
true
을(를) db.currentOp()
(으)로 전달하는 것은 { "$all": true }
문서를 전달하는 것과 같습니다. 다음 작업은 이에 해당합니다.
db.currentOp(true) db.currentOp( { "$all": true } )
db.currentOp()
및 데이터베이스 프로파일러 는 다음을 포함한 모든 CRUD 작업에 대해 동일한 기본 진단 정보를 보고합니다.
getMore
(OP_GET_MORE 및command
)
이러한 작업은 느린 쿼리 로깅에도 포함됩니다(느린 쿼리 로깅에 대한 자세한 내용은 slowOpThresholdMs
참조).
액세스 제어
authorization
로 실행되는 시스템에서는 사용자에게 inprog
권한 작업이 포함된 액세스 권한이 있어야 합니다.
사용자는 inprog
권한 작업 없이도 mongod
인스턴스에서 db.currentOp( { "$ownOps": true }
)
를 실행하여 자신의 작업을 볼 수 있습니다.
팁
다음도 참조하세요.
예제
다음 예제에서는 다양한 쿼리 문서와 함께 db.currentOp()
메서드를 사용하여 출력을 필터링합니다.
잠금을 기다리는 쓰기 작업
다음 예에서는 잠금을 기다리는 모든 쓰기 작업에 대한 정보를 반환합니다.
db.currentOp( { "waitingForLock" : true, $or: [ { "op" : { "$in" : [ "insert", "update", "remove" ] } }, { "command.findandmodify": { $exists: true } } ] } )
양보가 없는 활성 작업
다음 예시에서는 결코 양보되지 않은 모든 활성 실행 작업에 대한 정보를 반환합니다.
db.currentOp( { "active" : true, "numYields" : 0, "waitingForLock" : false } )
특정 데이터베이스에 대한 활성 작업
다음 예시에서는 3초 이상 실행된 데이터베이스 db1
의 모든 활성 작업에 대한 정보를 반환합니다.
db.currentOp( { "active" : true, "secs_running" : { "$gt" : 3 }, "ns" : /^db1\./ } )
활성 인덱싱 작업
다음 예제에서는 인덱스 생성 작업에 대한 정보를 반환합니다.
db.adminCommand( { currentOp: true, $or: [ { op: "command", "command.createIndexes": { $exists: true } }, { op: "none", "msg" : /^Index Build/ } ] } )
출력 예시
다음은 db.currentOp()
출력의 프로토타입입니다.
특정 출력 예제
이러한 출력 샘플은 특정 연산에 대한 currentOp
출력을 보여 줍니다. 실제 출력을 구성하는 필드는 서버의 역할에 따라 달라집니다.
출력 리샤딩 예제
{ type: "op", desc: "Resharding{Donor, Recipient, Coordinator}Service <reshardingUUID>", op: "command", ns: "<database>.<collection>", originatingCommand: { reshardCollection: "<database>.<collection>", key: <shardkey>, unique: <boolean>, collation: {locale: "simple"}, // Other options to the reshardCollection command are omitted // to decrease the likelihood the output is truncated. }, {donor, coordinator, recipient}State : "<service state>", approxDocumentsToCopy: NumberLong(<count>), approxBytesToCopy: NumberLong(<count>), bytesCopied: NumberLong(<count>), countWritesToStashCollections: NumberLong(<count>), countWritesDuringCriticalSection : NumberLong(<count>), countReadsDuringCriticalSection: NumberLong(<count>), deletesApplied: NumberLong(<count>), documentsCopied: NumberLong(<count>), insertsApplied: NumberLong(<count>), oplogEntriesFetched: NumberLong(<count>), oplogEntriesApplied: NumberLong(<count>), remainingOperationTimeEstimatedSecs: NumberLong(<count>), allShardsLowestRemainingOperationTimeEstimatedSecs: NumberLong(<estimate>), allShardsHighestRemainingOperationTimeEstimatedSecs: NumberLong(<estimate>), totalApplyTimeElapsedSecs: NumberLong(<count>), totalCopyTimeElapsedSecs: NumberLong(<count>), totalCriticalSectionTimeElapsedSecs : NumberLong(<count>), totalOperationTimeElapsedSecs: NumberLong(<count>), updatesApplied: NumberLong(<count>), }
글로벌 인덱스 예시
{ type: "op", desc: "GlobalIndex{Donor, Recipient, Coordinator}Service <globalIndexUUID}", op: "command", ns: "<database>.<collection>", originatingCommand: { createIndexes: "<database>.<collection>", key: <indexkeypattern>, unique: <boolean>, <Additional createIndexes options> }, {donor, coordinator, recipient}State : "<service state>", approxDocumentsToScan: NumberLong(<count>), approxBytesToScan: NumberLong(<count>), bytesWrittenFromScan: NumberLong(<count>), countWritesToStashCollections: NumberLong(<count>), countWritesDuringCriticalSection : NumberLong(<count>), countReadsDuringCriticalSection: NumberLong(<count>), keysWrittenFromScan: NumberLong(<count>), remainingOperationTimeEstimatedSecs: NumberLong(<count>), allShardsLowestRemainingOperationTimeEstimatedSecs: NumberLong(<estimate>), allShardsHighestRemainingOperationTimeEstimatedSecs: NumberLong(<estimate>), totalCopyTimeElapsedSecs: NumberLong(<count>), totalCriticalSectionTimeElapsedSecs : NumberLong(<count>), totalOperationTimeElapsedSecs: NumberLong(<count>), }
출력 필드
db.currentOp()
출력 필드의 전체 목록은 currentOp를 참조하세요.