currentOp
定義
currentOp
インスタンスに対して進行中の操作に関する情報を含む ドキュメント
mongod
を返します。currentOp
コマンドとそのmongosh
ヘルパー メソッドdb.currentOp()
の代わりに、$currentOp
集計ステージを使用します。
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
注意
このコマンドは、すべての MongoDB Atlas クラスターでサポートされています。すべてのコマンドに対する Atlas のサポートについては、 「サポートされていないコマンド」を参照してください。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
このコマンドの構文は、次のとおりです。
db.adminCommand( { currentOp: 1 } )
注意
MongoDB5.0 以降では、ヘルパー$currentOp
メソッド をdb.currentOp()
とともに実行するときにmongosh
集計ステージが使用されます。
これを考慮すると、shell の 5.0 バージョンと mongosh では、 db.currentOp()
の結果セットは、前のレガシーmongo
バージョンのドキュメントの 16 MB のBSON ドキュメント戻りサイズ 制限を受けません。
動作
currentOp
はadmin
データベースに対して実行する必要があり、いくつかのオプション フィールドを受け入れることができます。
フィールド | 説明 |
---|---|
"$ownOps" | ブール値。
|
"$all" | ブール値。
|
<filter> | |
comment | 任意。このコマンドに添付するユーザー指定のコメント。設定すると、このコメントは以下の場所にこのコマンドの記録と合わせて表示されます。
コメントには、有効な BSON 型(string, integer, object, array など)を使用できます。 |
currentOp
とデータベースプロファイラーがCRUD操作について報告する基本的な診断情報は同じで、次のようなものがあります。
getMore
(OP_GET_MORE とcommand
)
これらの操作は低速クエリのログにも含まれます。 低速クエリ ロギングの詳細については、 slowOpThresholdMs
を参照してください。
アクセス制御
authorization
で実行されているシステムでは、ユーザーに inprog
特権アクションを含むアクセス権が必要です。
ユーザーはmongod
インスタンスで$ownOps
を使用して、 inprog
特権アクションなしで自分の操作を表示できます。
db.adminCommand( { currentOp: 1, "$ownOps": 1 } )
例
次の例では、さまざまなクエリ ドキュメントでcurrentOp
コマンドを使用して出力をフィルタリングします。
現在のすべての操作の表示
db.adminCommand( { currentOp: true, "$all": true } )
ロックを待機する書込み (write) 操作
次の例では、ロックを待機しているすべての書込み (write) 操作に関する情報を返します。
db.adminCommand( { currentOp: true, "waitingForLock" : true, $or: [ { "op" : { "$in" : [ "insert", "update", "remove" ] } }, { "command.findandmodify": { $exists: true } } ] } )
中断のないアクティブな操作
次の例では、実行中のアクティブな操作のうち、中断していないすべての操作に関する情報を返します。
db.adminCommand( { currentOp: true, "active" : true, "numYields" : 0, "waitingForLock" : false } )
特定のデータベースに対するアクティブな操作
次の例では、3 秒以上実行されているデータベース db1
のすべてのアクティブな操作に関する情報を返します。
db.adminCommand( { currentOp: true, "active" : true, "secs_running" : { "$gt" : 3 }, "ns" : /^db1\./ } )
アクティブなインデックス操作
次の例では、インデックスの作成操作に関する情報を返します。
db.adminCommand( { currentOp: true, $or: [ { op: "command", "command.createIndexes": { $exists: true } }, { op: "none", "msg" : /^Index Build/ } ] } )
出力例
以下は、スタンドアロンで実行した場合のcurrentOp
出力のプロトタイプです。
{ "inprog": [ { "type" : <string>, "host" : <string>, "desc" : <string>, "connectionId" : <number>, "client" : <string>, "appName" : <string>, "clientMetadata" : <document>, "active" : <boolean>, "currentOpTime" : <string>, "effectiveUsers" : [ { "user" : <string>, "db" : <string> } ], "opid" : <number>, "lsid" : { "id" : <UUID>, "uid" : <BinData> }, "secs_running" : <NumberLong()>, "microsecs_running" : <number>, "op" : <string>, "ns" : <string>, "command" : <document>, "planSummary": <string>, "cursor" : { // only for getMore operations "cursorId" : <NumberLong()>, "createdDate" : <ISODate()>, "lastAccessDate" : <ISODate()>, "nDocsReturned" : <NumberLong()>, "nBatchesReturned" : <NumberLong()>, "noCursorTimeout" : <boolean>, "tailable" : <boolean>, "awaitData" : <boolean>, "originatingCommand" : <document>, "planSummary" : <string>, "operationUsingCursorId" : <NumberLong()> }, "msg": <string>, "progress" : { "done" : <number>, "total" : <number> }, "killPending" : <boolean>, "numYields" : <number>, "dataThroughputLastSecond" : <number>, "dataThroughputAverage" : <number>, "waitingForLatch" : { "timestamp" : <ISODate()>, "captureName" : <string> }, "locks" : { "ParallelBatchWriterMode" : <string>, "ReplicationStateTransition" : <string>, "Global" : <string>, "Database" : <string>, "Collection" : <string>, "Metadata" : <string>, "oplog" : <string> }, "waitingForLock" : <boolean>, "lockStats" : { "ParallelBatchWriterMode" : { "acquireCount": { "r": <NumberLong>, "w": <NumberLong>, "R": <NumberLong>, "W": <NumberLong> }, "acquireWaitCount": { "r": <NumberLong>, "w": <NumberLong>, "R": <NumberLong>, "W": <NumberLong> }, "timeAcquiringMicros" : { "r" : NumberLong(0), "w" : NumberLong(0), "R" : NumberLong(0), "W" : NumberLong(0) }, "deadlockCount" : { "r" : NumberLong(0), "w" : NumberLong(0), "R" : NumberLong(0), "W" : NumberLong(0) } }, "ReplicationStateTransition" : { ... }, "Global": { ... }, "Database" : { ... }, ... } }, ... ], "fsyncLock": <boolean>, "info": <string>, "ok": <num> }
以下は、レプリカセットのプライマリで実行した場合のcurrentOp
出力のプロトタイプです。
{ "inprog": [ { "type" : <string>, "host" : <string>, "desc" : <string>, "connectionId" : <number>, "client" : <string>, "appName" : <string>, "clientMetadata" : <document>, "lsid" : { "id" : <UUID>, "uid" : <BinData> }, "transaction" : { "parameters" : { "txnNumber" : <NumberLong()>, "autocommit" : <boolean>, "readConcern" : { "level" : <string> } }, "readTimestamp" : <Timestamp>, "startWallClockTime" : <string>, "timeOpenMicros" : <NumberLong()>, "timeActiveMicros" : <NumberLong()>, "timeInactiveMicros" : <NumberLong()>, "expiryTime" : <string>, }, "active" : <boolean>, "currentOpTime" : <string>, "effectiveUsers" : [ { "user" : <string>, "db" : <string> } ], "opid" : <number>, "secs_running" : <NumberLong()>, "microsecs_running" : <number>, "op" : <string>, "ns" : <string>, "command" : <document>, "originatingCommand" : <document>, "planSummary": <string>, "prepareReadConflicts" : <NumberLong()>, "writeConflicts" : <NumberLong()>, "cursor" : { // only for getMore operations "cursorId" : <NumberLong()>, "createdDate" : <ISODate()>, "lastAccessDate" : <ISODate()>, "nDocsReturned" : <NumberLong()>, "nBatchesReturned" : <NumberLong()>, "noCursorTimeout" : <boolean>, "tailable" : <boolean>, "awaitData" : <boolean>, "originatingCommand" : <document>, "planSummary" : <string>, "operationUsingCursorId" : <NumberLong()> }, "msg": <string>, "progress" : { "done" : <number>, "total" : <number> }, "killPending" : <boolean>, "numYields" : <number>, "dataThroughputLastSecond" : <number>, "dataThroughputAverage" : <number>, "waitingForLatch" : { "timestamp" : <ISODate()>, "captureName" : <string> }, "locks" : { "ParallelBatchWriterMode" : <string>, "ReplicationStateTransition" : <string>, "Global" : <string>, "Database" : <string>, "Collection" : <string>, "Metadata" : <string>, "oplog" : <string> }, "waitingForLock" : <boolean>, "lockStats" : { "ParallelBatchWriterMode" : { "acquireCount": { "r": <NumberLong>, "w": <NumberLong>, "R": <NumberLong>, "W": <NumberLong> }, "acquireWaitCount": { "r": <NumberLong>, "w": <NumberLong>, "R": <NumberLong>, "W": <NumberLong> }, "timeAcquiringMicros" : { "r" : NumberLong(0), "w" : NumberLong(0), "R" : NumberLong(0), "W" : NumberLong(0) }, "deadlockCount" : { "r" : NumberLong(0), "w" : NumberLong(0), "R" : NumberLong(0), "W" : NumberLong(0) } }, "ReplicationStateTransition" : { ... }, "Global" : { ... }, "Database" : { ... }, ... } }, ... ], "fsyncLock": <boolean>, "info": <string>, "ok": <num>, "operationTime": <timestamp>, "$clusterTime": <document> }
以下は、シャーディングされたクラスターの で実行された場合のcurrentOp
mongos
出力の例えです(フィールドは、報告される操作によって異なる場合があります)。
{ "inprog": [ { "shard": <string>, "type" : <string>, "host" : <string>, "desc" : <string>, "connectionId" : <number>, "client_s" : <string>, "appName" : <string>, "clientMetadata" : <document>, "lsid" : { "id" : <UUID>, "uid" : <BinData> }, "transaction" : { "parameters" : { "txnNumber" : <NumberLong()>, "autocommit" : <boolean>, "readConcern" : { "level" : <string> } }, "readTimestamp" : <Timestamp>, "startWallClockTime" : <string>, "timeOpenMicros" : <NumberLong()>, "timeActiveMicros" : <NumberLong()>, "timeInactiveMicros" : <NumberLong()>, "expiryTime" : <string>, }, "active" : <boolean>, "currentOpTime" : <string>, "effectiveUsers" : [ { "user" : <string>, "db" : <string> } ], "runBy" : [ { "user" : <string>, "db" : <string> } ], "twoPhaseCommitCoordinator" : { "lsid" : { "id" : <UUID>, "uid" : <BinData> }, "txnNumber" : <NumberLong>, "numParticipants" : <NumberLong>, "state" : <string>, "commitStartTime" : <ISODate>, "hasRecoveredFromFailover" : <boolean>, "stepDurations" : <document>, "decision" : <document>, "deadline" : <ISODate> } "opid" : <string>, "secs_running" : <NumberLong()>, "microsecs_running" : <number>, "op" : <string>, "ns" : <string>, "command" : <document>, "configTime" : <Timestamp>, // Starting in 5.0 "topologyTime" : <Timestamp>, // Starting in 5.0 "planSummary": <string>, "prepareReadConflicts" : <NumberLong()>, "writeConflicts" : <NumberLong()>, "cursor" : { // only for getMore operations "cursorId" : <NumberLong()>, "createdDate" : <ISODate()>, "lastAccessDate" : <ISODate()>, "nDocsReturned" : <NumberLong()>, "nBatchesReturned" : <NumberLong()>, "noCursorTimeout" : <boolean>, "tailable" : <boolean>, "awaitData" : <boolean>, "originatingCommand" : <document>, "planSummary" : <string>, "operationUsingCursorId" : <NumberLong()> }, "msg": <string>, "progress" : { "done" : <number>, "total" : <number> }, "killPending" : <boolean>, "numYields" : <number>, "dataThroughputLastSecond" : <number>, "dataThroughputAverage" : <number>, "waitingForLatch" : { "timestamp" : <ISODate()>, "captureName" : <string> }, "locks" : { "ParallelBatchWriterMode" : <string>, "ReplicationStateTransition" : <string>, "Global" : <string>, "Database" : <string>, "Collection" : <string>, "Metadata" : <string>, "oplog" : <string> }, "waitingForLock" : <boolean>, "lockStats" : { "ParallelBatchWriterMode": { "acquireCount": { "r": <NumberLong>, "w": <NumberLong>, "R": <NumberLong>, "W": <NumberLong> }, "acquireWaitCount": { "r": <NumberLong>, "w": <NumberLong>, "R": <NumberLong>, "W": <NumberLong> }, "timeAcquiringMicros" : { "r" : NumberLong(0), "w" : NumberLong(0), "R" : NumberLong(0), "W" : NumberLong(0) }, "deadlockCount" : { "r" : NumberLong(0), "w" : NumberLong(0), "R" : NumberLong(0), "W" : NumberLong(0) } }, "ReplicationStateTransition" : { ... }, "Global" : { ... }, "Database" : { ... }, ... } }, ... ], "ok": <num>, "operationTime": <timestamp>, "$clusterTime": <document> }
出力フィールド
currentOp.type
バージョン 4.2の新機能
操作の種類。 値は次のいずれかです。
op
idleSession
idleCursor
currentOp.type
がop
の場合、currentOp.op
は特定の操作の詳細を提供します。
currentOp.desc
クライアントの説明。 この string には
connectionId
が含まれます。
currentOp.client
操作が発生した場所に関する情報を含む string。
マルチドキュメントトランザクションの場合、
client
はトランザクション内で操作を実行するための最新のクライアントに関する情報を保存します。
currentOp.appName
操作を実行したクライアント・アプリケーションの識別子。
appName
接続stringオプションを使用して、appName
フィールドにカスタム値を設定します。
currentOp.clientMetadata
クライアントに関する追加情報。
マルチドキュメントトランザクションの場合、
client
はトランザクション内で操作を実行するための最新のクライアントに関する情報を保存します。
currentOp.effectiveUsers
操作に関連付けられた各ユーザーのドキュメントを含む配列。 各ユーザー ドキュメントには、
user
名と認証db
が含まれています。バージョン 4.2の新機能
currentOp.runBy
操作のために
effectiveUser(s)
を引き受けている各ユーザーのドキュメントを含む配列。 runBy ドキュメントにはuser
名と認証db
が含まれています。 一般に、 runBy ユーザーは__system
ユーザーです。例:"runBy" : [ { "user" : "__system", "db" : "local" } ] シャーディングされたクラスターでのみ利用可能
バージョン 4.2の新機能
currentOp.transaction
マルチドキュメントトランザクション情報を含むドキュメント。
操作がマルチドキュメントトランザクションの一部である場合にのみ存在します。
currentOp.transaction.parameters
マルチドキュメントトランザクションに関する情報を含むドキュメント。
操作がマルチドキュメントトランザクションの一部である場合にのみ存在します。
currentOp.transaction.parameters.autocommit
トランザクションでオートコミットがオンになっているかどうかを示すブール値のフラグ。
操作がマルチドキュメントトランザクションの一部である場合にのみ存在します。
currentOp.transaction.parameters.readConcern
トランザクションの読み取り保証( read concern )です。
マルチドキュメントトランザクションは、読み取り保証(read concern)
"snapshot"
、"local"
、"majority"
をサポートします。操作がマルチドキュメントトランザクションの一部である場合にのみ存在します。
currentOp.transaction.readTimestamp
トランザクション内の操作によって読み取られるスナップショットのタイムスタンプ。
操作がマルチドキュメントトランザクションの一部である場合にのみ存在します。
currentOp.transaction.startWallClockTime
トランザクションが開始された日時(タイムゾーン)。
操作がマルチドキュメントトランザクションの一部である場合にのみ存在します。
currentOp.transaction.timeOpenMicros
トランザクションの期間(マイクロ秒単位)。
timeActiveMicros
に追加される の値はtimeInactiveMicros
timeOpenMicros
と等しくなっている必要があります。操作がマルチドキュメントトランザクションの一部である場合にのみ存在します。
currentOp.transaction.timeActiveMicros
トランザクションがアクティブになっている合計時間。つまり、トランザクションで操作が実行されていた場合を指します。
timeActiveMicros
に追加される の値はtimeInactiveMicros
timeOpenMicros
と等しくなっている必要があります。操作がマルチドキュメントトランザクションの一部である場合にのみ存在します。
currentOp.transaction.timeInactiveMicros
トランザクションが非アクティブであった合計時間。トランザクションで実行中の操作がない場合。
timeInactiveMicros
に追加される の値はtimeActiveMicros
timeOpenMicros
と等しくなっている必要があります。操作がマルチドキュメントトランザクションの一部である場合にのみ存在します。
currentOp.transaction.expiryTime
トランザクションがタイムアウトして中止される日時(タイムゾーンあり)。
currentOp.transaction.expiryTime
はcurrentOp.transaction.startWallClockTime
+transactionLifetimeLimitSeconds
に等しくなります。詳細については、「 トランザクションの実行時間制限 」を参照してください。
操作がマルチドキュメントトランザクションの一部である場合にのみ存在します。
currentOp.twoPhaseCommitCoordinator
次のいずれかに関する情報
書込み (write) 操作が複数のシャードにまたがるトランザクションのコミット調整メトリクス。
コミット調整はシャードによって処理され、
currentOp
(mongos
またはシャード ノードで実行)は、そのシャードによって現在調整されているトランザクションについてのみシャードの調整情報を返します。コミット調整メトリクスのみをフィルタリングするには:
db.currentOp( { desc: "transaction coordinator" }) 特定のコミット調整操作(
currentOp.type
はop
であり、currentOp.desc
は"TransactionCoordinator"
です)。
currentOp.twoPhaseCommitCoordinator.lsid
マルチシャード トランザクションのセッション識別子。
currentOp.twoPhaseCommitCoordinator.txnNumber
マルチシャード トランザクションのトランザクション番号。
currentOp.twoPhaseCommitCoordinator.action
トランザクションの調整役によって生成される特定のコミット調整操作は、以下のとおりです。
"sendingPrepare"
"sendingCommit"
"sendingAbort"
"writingParticipantList"
"writingDecision"
"deletingCoordinatorDoc"
currentOp.twoPhaseCommitCoordinator.state
コミット調整プロセスの現在のステップまたは状態。
ステップ/ステージ説明inactive
コミットのアクティブな一部ではない。writingParticipantList
このマルチシャード トランザクションの一部であるシャードのリストをローカル レコードで書込み (write) ます。waitingForVotes
参加者がコミットまたは中止への投票で応答するまで待機します。writingDecision
投票に基づいてコミットまたは中止するかどうかのコーディネーターの決定をローカル レコードで書き込みます。waitingForDecisionAck
コーディネーターのコミットまたは中止の決定を確認するまで、参加者が待機します。deletingCoordinatorDoc
コミット決定のローカル レコードを削除します。
currentOp.twoPhaseCommitCoordinator.hasRecoveredFromFailover
コミットを調整しているシャードで フェイルオーバー によりコミット調整が再開されたかどうかを示すブール値。
hasRecoveredFromFailover
が true の場合、currentOp.twoPhaseCommitCoordinator.stepDurations
で指定される時間がすべてのステップで正確にならない可能性があります。
currentOp.twoPhaseCommitCoordinator.stepDurations
コミット調整
steps/state
が完了した、または進行中の期間をマイクロ秒単位で含むドキュメント。"stepDurations" : { "writingParticipantListMicros" : NumberLong(17801), "totalCommitDurationMicros" : NumberLong(42488463), "waitingForVotesMicros" : NumberLong(30378502), "writingDecisionMicros" : NumberLong(15015), "waitingForDecisionAcksMicros" : NumberLong(12077145), "deletingCoordinatorDocMicros" : NumberLong(6009) }, currentOp.twoPhaseCommitCoordinator.hasRecoveredFromFailover
が true の場合、stepDurations
で指定される時間がすべてのステップで正確にならない可能性があります。inactive
状態のコーディネーターの場合、ドキュメントは空です。"stepDurations" : { } 「
currentOp.twoPhaseCommitCoordinator.state
」を参照してください。
currentOp.twoPhaseCommitCoordinator.decision
コミットまたは中止の決定を含むドキュメント。例:
コミットの決定を行うには:
"decision" : { "decision" : "commit", "commitTimestamp" : Timestamp(1572034669, 3) } 中止の決定を行うには:
"decision" : { "decision" : "abort", "abortStatus" : { "code" : 282, "codeName" : "TransactionCoordinatorReachedAbortDecision", "errmsg" : "Transaction exceeded deadline" } }
currentOp.opid
操作の識別子。 この値を
db.killOp()
のmongosh
に渡すと、操作を終了できます。警告
実行中の操作は、細心の注意を払って終了します。 クライアントによって開始された操作を終了するには
db.killOp()
のみを使用し、内部データベース操作は終了しません。
currentOp.active
操作が開始されたかどうかを指定するブール値。 値は、操作が開始された場合は
true
で、操作がアイドル状態(アイドル接続や現在アイドル状態の内部スレッドなど)の場合はfalse
です。 操作が別の操作に中断された場合でも、操作をアクティブにすることができます。 非アクティブなsignalProcessingThread
などの一部の非アクティブなバックグラウンド スレッドの場合、MongoDB はさまざまな空のフィールドを抑制します。
currentOp.secs_running
操作の期間(秒単位)。 MongoDB は、操作の開始時刻から現在の時刻を減算してこの値を計算します。
操作が実行中の場合にのみ表示されます。つまり、
active
がtrue
の場合は になります。
currentOp.microsecs_running
操作の継続時間(マイクロ秒単位)。 MongoDB は、操作の開始時刻から現在の時刻を減算してこの値を計算します。
操作が実行中の場合にのみ表示されます。つまり、
active
がtrue
の場合は になります。
currentOp.op
特定の操作タイプを識別する string。
currentOp.type
がop
の場合にのみ存在します。可能な値は次のとおりです。
"none"
"update"
"insert"
"query"
"command"
"getmore"
"remove"
"killcursors"
"query"
操作には、読み取り操作が含まれます。"command"
操作には、 やcreateIndexes
などのほとんどの コマンドfindAndModify
が含まれます。
currentOp.ns
操作の対象となる名前空間。 名前空間は、データベース名とコレクション名をドットで連結したもの(
.
)で構成されています。つまり、"<database>.<collection>"
です。
currentOp.command
この操作に関連付けられた完全なコマンドオブジェクトを含むドキュメント。
たとえば、次の出力には、
test
という名前のデータベース内のitems
という名前のコレクションに対するfind
操作のコマンド オブジェクトが含まれています。"command" : { "find" : "items", "filter" : { "sku" : 1403978 }, ... "$db" : "test" } 次の出力例には、
test
という名前のデータベース内のitems
という名前のコレクションで、カーソル ID19234103609
を持つ コマンドによって生成されたgetMore
操作のコマンド オブジェクトが含まれています。"command" : { "getMore" : NumberLong("19234103609"), "collection" : "items", "batchSize" : 10, ... "$db" : "test" }, コマンド ドキュメントが 1 キロバイトを超える場合、ドキュメントの形式は次のようになります。
"command" : { "$truncated": <string>, "comment": <string> } $truncated
フィールドには、ドキュメントのcomment
フィールド(存在する場合)を除いたドキュメントの string のサマリーが含まれます。 サマリーが依然として 1 キロバイトを超える場合は、さらに切り捨てられ、string の末尾に省略記号 (...) が表示されます。操作にコメントが渡された場合、
comment
フィールドが存在します。任意のデータベースコマンドにコメントを添付できます。
currentOp.planSummary
カーソルがコレクションスキャン(
COLLSCAN
)またはインデックススキャン(IXSCAN { ... }
)のどちらを使用するかを指定します。IXSCAN
には、使用されるインデックスの仕様ドキュメントも含まれます。
currentOp.prepareReadConflicts
現在の操作が、コミットまたは中止するための書込み (write) で準備されたトランザクションを待機しなければならなかった回数。
待機中も、現在の操作は必要なロックとストレージ エンジン リソースを保持し続けます。
バージョン 4.2の新機能
currentOp.cursor
バージョン 4.2の新機能
getmore
操作のカーソル情報を含むドキュメントすなわち ここで、op
はgetmore
です。getmore
がカーソル情報にアクセスする前にgetmore
操作を報告する場合、cursor
フィールドは使用できません。currentOp.cursor.noCursorTimeout
バージョン 4.2の新機能
アイドル状態の場合、カーソルがタイムアウトしないことを示すフラグ。 (つまり、カーソルに
noTimeout
オプションが設定されている場合)。true の場合、アイドル状態のときにカーソルはタイムアウトしません。
false の場合、アイドル状態のときにカーソルはタイムアウトになります。
currentOp.cursor.tailable
バージョン 4.2の新機能
カーソルがCappedコレクションの 追尾可能 (tailable) カーソル かどうかを示すフラグ。 クライアントが初期カーソルの結果を使い果たした後も、追尾可能 (tailable) カーソルはオープンしたままになります。
currentOp.cursor.awaitData
バージョン 4.2の新機能
追尾可能 (tailable) カーソルが、データを返さずに新しいデータを待機している間に、カーソル上の
getMore
コマンドを一時的にブロックするかどうかを示すフラグ。追尾可能 (tailable) ではないカーソルの場合、値は常に false です。
currentOp.cursor.originatingCommand
バージョン 4.2の新機能
originatingCommand
フィールドには完全なコマンドオブジェクト(例:find
またはaggregate
)が必要です。注意
MongoDB バージョン 4.2 以降では、新しい
cursor
フィールドにネストされたフィールドとしてoriginatingCommand
フィールドが返されるようになりました。 以前のバージョンでは、originatingCommand
は関連付けられた"getmore"
ドキュメントの最上位フィールドでした。
currentOp.waitingForLatch
waitingForLatch
ドキュメントは、操作が内部のロック プリミティブ(ラッチ)、または内部条件が満たされるのを待機している場合にのみ使用できます。たとえば、
"waitingForLatch" : { "timestamp" : ISODate("2020-03-19T23:25:58.412Z"), "captureName" : "FutureResolution", }, 出力フィールド説明タイムスタンプ操作が待機を開始した日時。acceptName操作が現在ブロックされているセクションの内部名。バージョン 4.2.2 の新機能。
currentOp.locks
locks
ドキュメントは、操作が現在保持しているロックのタイプとモードを報告します。 使用可能なロック タイプは、以下のとおりです。ロック タイプ説明ParallelBatchWriterMode
並列バッチ書込みモードのロックを表します。
以前のバージョンでは、PBWM 情報は
Global
ロック情報の一部として報告されていました。ReplicationStateTransition
レプリカセットの状態遷移に対して取得されたロックを表します。Global
グローバル ロックを表します。Database
データベース ロックを表します。Collection
コレクション ロックを表します。Mutex
ミューテックスを表します。Metadata
メタデータ ロックを表します。oplog
oplog のロックを表します。使用可能なモードは次のとおりです。
ロックモード説明R
共有ロック(S)を表します。W
排他ロック(X)を表します。r
インテント共有ロック(IS)を表します。w
インテント排他ロック(IX)を表します。
currentOp.waitingForLock
ブール値を返します。
waitingForLock
は、操作がロックを待機している場合はtrue
であり、操作に必要なロックがある場合はfalse
です。
currentOp.msg
msg
には、操作のステータスと進行状況を説明するメッセージが表示されます。 インデックス操作または mapReduce 操作の場合、 フィールドには完了率が報告されます。
currentOp.progress
mapReduce またはインデックス操作の進行状況を報告します。
progress
フィールドは、msg
フィールドの完了パーセンテージに対応します。progress
は、次の情報を指定します。
currentOp.numYields
numYields
は、他の操作を完了させるために操作が中断した回数を報告するカウンターです。通常、MongoDB がまだ完全にメモリに読み込んでいないデータにアクセスする必要がある場合、操作は中断します。 これにより、MongoDB が中断された操作のデータを読み込んでいる間に、メモリにデータがある他の操作を迅速に完了できます。
currentOp.dataThroughputLastSecond
過去 1 秒に
validate
操作によって処理されたデータの量(MiB 単位)。 現在ドキュメントをスキャンしているvalidate
操作でのみ使用できます。 例:"msg" : "Validate: scanning documents Validate: scanning documents: 7258/24000 30%", "progress" : { "done" : 7258, "total" : 24000 }, "numYields" : 0, "dataThroughputLastSecond" : 15.576952934265137, "dataThroughputAverage" : 15.375944137573242,
currentOp.dataThroughputAverage
validate
操作によって処理された平均データ量(MiB 単位)。 現在ドキュメントをスキャンしているvalidate
操作でのみ使用できます。 例:"msg" : "Validate: scanning documents Validate: scanning documents: 7258/24000 30%", "progress" : { "done" : 7258, "total" : 24000 }, "numYields" : 0, "dataThroughputLastSecond" : 15.576952934265137, "dataThroughputAverage" : 15.375944137573242,
currentOp.fsyncLock
データベースが現在
fsync write/snapshot
に対してロックされているかどうかを指定します。ロックされている場合にのみ表示されます。つまり、
fsyncLock
がtrue
の場合は になります。
currentOp.info
db.fsyncLock()
からデータベースのロックを解除する方法に関する情報。fsyncLock
がtrue
の場合にのみ表示されます。
currentOp.lockStats
各ロック タイプとモード(ロック タイプとモードの説明については、
currentOp.locks
を参照)について、次の情報を返します。currentOp.lockStats.acquireWaitCount
ロックが競合モードで保持されていたために操作が
acquireCount
ロックの取得を待機しなければならなかった回数。acquireWaitCount
はacquireCount
より小さいです。
currentOp.lockStats.timeAcquiringMicros
操作がロックを取得するために待機しなければならなかった累計時間(マイクロ秒単位)。
timeAcquiringMicros
をacquireWaitCount
で割ると、特定のロック モードのおおよその平均待機時間が得られます。
currentOp.waitingForFlowControl
操作がフロー制御を待機しているプロセス内かどうかを示すブール値。
バージョン 4.2の新機能
currentOp.totalOperationTimeElapsed
現在のリシャーディング操作の合計経過時間(秒単位)。 新たにリシャーディング操作を開始すると、時間は 0 に設定されます。
リシャーディング操作 が行われている場合にのみ存在します。
バージョン 5.0 で追加
currentOp.remainingOperationTimeEstimated
remainingOperationTimeEstimatedSecs
: 現在のリシャーディング操作の推定残り時間(秒単位)。 新たにリシャーディング操作を開始すると、-1
として返されます。次以降:
MongoDB 5.0 および MongoDB 6.1 より前では、
remainingOperationTimeEstimatedSecs
は 再シャーディング操作 中に受信者シャードでのみ使用できます。MongoDB 6.1、
remainingOperationTimeEstimatedSecs
は、リシャーディング操作中にコーディネーターで使用することもできます。
リシャーディング操作では、これらのフェーズを順番に実行されます。
クローン フェーズは、現在のコレクション データを複製します。
キャッチアップ フェーズは、保留中の書込み (write) 操作をリシャーディングされたコレクションに適用します。
remainingOperationTimeEstimatedSecs
は悲観的な時間推定値に設定されています。キャッチアップフェーズの推定時間は、比較的長い時間であるクローンフェーズ時間に設定されます。
実際には、保留中の書込み操作が少ない場合、実際のキャッチアップ フェーズ時間は比較的短いです。
バージョン 5.0 で追加
currentOp.approxDocumentsToCopy
リシャーディング操作中にドナー シャードから受信者シャードにコピーされるドキュメントのおおよその数です。 この数値は、リシャーディング操作の開始時に設定され、設定された後は変化しない推定値です。 新たにリシャーディング操作を開始すると、数値は 0 に設定されます。 リシャーディング後のデータ分布が完全に均等でない場合、
$currentOp.documentsCopied
と$currentOp.bytesCopied
はそれぞれ$currentOp.approxDocumentsToCopy
と$currentOp.approxBytesToCopy
を超えてしまう可能性があります。リシャーディング操作 が行われているときにのみ 受信者シャード に存在します。
バージョン 5.0 で追加
currentOp.documentsCopied
リシャーディング操作中にドナー シャードから受信者シャードにコピーされたドキュメントの数です。 新たにリシャーディング操作を開始すると、数値は 0 に設定されます。
リシャーディング操作 が行われているときにのみ 受信者シャード に存在します。
バージョン 5.0 で追加
currentOp.approxBytesToCopy
リシャーディング操作中にドナー シャードから受信者シャードにコピーされるおおよそのバイト数。 この数値は、リシャーディング操作の開始時に設定され、設定された後は変化しない推定値です。 新たにリシャーディング操作を開始すると、数値は 0 に設定されます。 リシャーディング後のデータ分布が完全に均等でない場合、
$currentOp.documentsCopied
と$currentOp.bytesCopied
はそれぞれ$currentOp.approxDocumentsToCopy
と$currentOp.approxBytesToCopy
を超えてしまう可能性があります。リシャーディング操作 が行われているときにのみ 受信者シャード に存在します。
バージョン 5.0 で追加
currentOp.bytesCopied
リシャーディング操作中にドナー シャードから受信者シャードにコピーされたバイト数です。 新たにリシャーディング操作を開始すると、数値は 0 に設定されます。
リシャーディング操作 が行われているときにのみ 受信者シャード に存在します。
バージョン 5.0 で追加
currentOp.totalCopyTimeElapsed
現在のリシャーディング操作におけるドナー シャードから受信者シャードへの進行中のデータ コピー タスクの合計経過時間(秒単位)。 新たにリシャーディング操作を開始すると、時間は 0 に設定されます。
リシャーディング操作 が行われているときにのみ 受信者シャード に存在します。
バージョン 5.0 で追加
currentOp.oplogEntriesFetched
現在の リシャーディング操作 で oplog から取得されたエントリの数です。新たにリシャーディング操作を開始すると、数値は 0 に設定されます。
リシャーディング操作 が行われているときにのみ 受信者シャード に存在します。
バージョン 5.0 で追加
currentOp.oplogEntriesApplied
現在の リシャーディング操作 で oplog に適用されたエントリの数。新たにリシャーディング操作を開始すると、数値は 0 に設定されます。
リシャーディング操作 が行われているときにのみ 受信者シャード に存在します。
バージョン 5.0 で追加
currentOp.totalApplyTimeElapsed
現在のリシャーディング操作における適用ステップの合計経過時間(秒単位)です。 適用ステップでは、受信者シャードは、ドナー シャードから新たに受信した書込み (write) に基づいてデータを変更するために、 oplogエントリを適用します。 新たにリシャーディング操作を開始すると、時間は 0 に設定されます。
リシャーディング操作 が行われているときにのみ 受信者シャード に存在します。
バージョン 5.0 で追加
currentOp.countWritesDuringCriticalSection
現在のリシャーディング操作でクリティカル セクションにおいて実行された書込み (write) の数。 クリティカル セクションは、リシャーディング中のコレクションへの新規の受信書込み (write) を防止します。 新たにリシャーディング操作を開始すると、数値は 0 に設定されます。
リシャーディング操作が行われているときにのみ存在します。
バージョン 5.0 で追加
currentOp.totalCriticalSectionTimeElapsed
現在のリシャーディング操作におけるクリティカル セクションの合計経過時間(秒単位)。 クリティカル セクションは、リシャーディング中のコレクションへの新規の受信書込み (write) を防止します。 新たにリシャーディング操作を開始すると、時間は 0 に設定されます。
リシャーディング操作が行われているときにのみ存在します。
バージョン 5.0 で追加
currentOp.donorState
リシャーディング操作におけるドナー シャードの現在の状態です。 新たにリシャーディング操作を開始すると、状態は
unused
に設定されます。リシャーディング操作が行われているときにのみ存在します。
状態説明unused
リシャーディング操作を開始またはプライマリ フェイルオーバーから回復しようとしているときpreparing-to-donate
ドナー シャードは、受信者シャードにデータを提供する準備をしています。donating-initial-data
ドナー シャードは受信者シャードにデータを提供します。donating-oplog-entries
ドナー シャードは、受信者シャードに oplog エントリを提供しています。preparing-to-block-writes
ドナー シャードは、リシャーディング中のコレクションへの新規の受信書込み (write) 操作を阻止しようとしています。error
リシャーディング操作中にエラーが発生しましたblocking-writes
ドナー シャードは新規の受信書込み (write) 操作を防ぎ、新規の受信書込み (write) が禁止されていることをすべての受信者シャードに通知しました。done
ドナー シャードは古いシャーディングされたコレクションを削除し、リシャーディング操作は完了しました。バージョン 5.0 で追加
currentOp.recipientState
リシャーディング操作 における受信者シャードの現在の状態です。 新たにリシャーディング操作を開始すると、状態は
unused
に設定されます。リシャーディング操作が行われているときにのみ存在します。
状態説明unused
リシャーディング操作を開始またはプライマリ フェイルオーバーから回復しようとしているときawaiting-fetch-timestamp
受信シャードは、ドナー シャードがデータを提供する準備ができるのを待っています。creating-collection
受信者シャードは新しいシャーディングされたコレクションを作成しています。cloning
受信者シャードはドナー シャードからデータを受信しています。applying
受信者シャードは、ドナー シャードからの新規受信書込み (write) に基づいてデータのコピーを変更するために、oplog エントリを適用しています。error
リシャーディング操作中にエラーが発生しましたstrict-consistency
受信者シャードでは、すべてのデータ変更は一時的なコレクションに保存されます。done
リシャーディング操作が完了しました。バージョン 5.0 で追加
currentOp.coordinatorState
現在のリシャーディング操作におけるリシャーディング コーディネーターの状態です。 リシャーディング コーディネーターは、 コンフィギュレーションサーバーのプライマリで実行される操作です。 新たにリシャーディング操作を開始すると、状態は
unused
に設定されます。調整コンフィギュレーションサーバー上にのみ存在します。
状態説明unused
リシャーディング操作を開始またはプライマリ フェイルオーバーから回復しようとしているときinitializing
リシャーディング コーディネーターは、コーディネーター ドキュメントをconfig.reshardingOperations
に挿入し、元のコレクションのconfig.collections
エントリにreshardingFields
を追加しました。preparing-to-donate
リシャーディング コーディネーター
は一時的なリシャーディング コレクション用の
config.collections
エントリを作成しました。は新しいシャードキーに基づく範囲に対するエントリを
config.chunks
に挿入しました。は新しいシャード キーに関連付けられたすべてのゾーンに対するエントリを
config.tags
に挿入しました。
コーディネーターは、参加シャードにリシャーディング操作を開始するように通知します。その後、コーディネーターはすべてのドナー シャードが
minFetchTimestamp
を選択し、提供の準備が整うまで待ちます。cloning
リシャーディング コーディネーターは、受信者シャードにデータを提供するようドナー シャードに通知します。コーディネーターは、すべての受信者がドナーからのデータの複製を完了させるのを待機します。applying
リシャーディング コーディネーターは、ドナー シャードから新たに受信した書込み (write) に基づいてデータのコピーを変更するよう、受信者シャードに通知します。コーディネーターは、すべての受信者が oplog エントリの適用を完了させるのを待機します。blocking-writes
リシャーディング コーディネーターは、コレクションへの新たな受信書込み (write) 操作がリシャーディングされないよう、ドナー シャードに通知します。その後、コーディネーターはすべての受信者がすべてのデータ変更を完了させるのを待機します。aborting
リシャーディング操作中に回復不能なエラーが発生したか、abortReshardCollection
コマンド(またはsh.abortReshardCollection()
メソッド)が実行されました。committing
リシャーディング コーディネーターは、一時的なリシャーディングコレクションのconfig.collections
エントリを削除します。次に、コーディネーターはrecipientFields
をソース コレクションのエントリに追加します。バージョン 5.0 で追加