Docs 菜单

Docs 主页开发应用程序MongoDB Manual

currentOp

在此页面上

  • 定义
  • 行为
  • 访问控制
  • 举例
  • 输出示例
  • 输出字段
currentOp

返回一个文档,其中包含有关 mongod 实例正在进行的操作的信息。

currentOp 采用以下形式:

{ currentOp: 1 }

注意

从 MongoDB 5开始。 0 ,即$currentOp聚合阶段,在使用 mongosh 运行辅助方法db.currentOp()时使用

鉴于此,在5 中。0 版本的 shell 和使用 mongosh 时,db.currentOp() 结果集不受针对先前旧版 文档的16 MB BSON 文档返回 mongo大小限制的约束。

currentOp必须针对admin数据库运行,并且可以接受多个可选字段。

字段
说明
"$ownOps"

布尔值。如果设为 true,则只返回有关当前用户的操作的信息。

mongod实例上,用户始终有权使用"$ownOps": true运行currentOp ,以查看自己的操作。请参阅访问控制。

版本3中的新增功能。 2 。 9

"$all"

布尔值。如果设置为 true,则返回所有操作的信息,包括对空闲连接的操作和系统操作。

"$all": true 覆盖任何输出字段过滤器。

<filter>
输出字段上指定筛选条件。请参阅示例。
comment

可选。用户提供的待附加到该命令的注释。设置后,该注释将与该命令的记录一起出现在以下位置:

注释可以是任何有效的 BSON 类型(字符串、整型、对象、数组等)。

currentOp 数据库分析器会为 CRUD 操作报告相同的基本诊断信息,包括以下内容:

这些操作也包含在慢查询日志中(有关慢查询日志的更多信息,请参阅slowOpThresholdMs)。

在使用 authorization 运行的系统上,用户必须具有包含 inprog 特权动作的访问权限。

没有 inprog 特权动作,用户也可以在 mongod 实例上使用 $ownOps,来查看自己的操作。

db.adminCommand( { currentOp: 1, "$ownOps": 1 } )

提示

另请参阅:

以下示例使用currentOp命令和各种查询文档来筛选输出。

db.adminCommand(
{
currentOp: true,
"$all": true
}
)

以下示例返回有关等待锁的所有写操作的信息:

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.type

4.2 版本中的新增功能

操作类型。值为:

  • op

  • idleSession

  • idleCursor

如果currentOp.typeop ,则currentOp.op提供有关特定操作的详细信息。

currentOp.host

运行操作的主机的名称。

currentOp.desc

对客户端的描述。此字符串包括connectionId

currentOp.connectionId

操作发起的连接的标识符。

currentOp.client

包含操作来源信息的字符串。

对于多文档事务, client会存储有关在事务中运行操作的最新客户端的信息。

currentOp.appName

版本 3.4 中的新增功能

运行操作的客户端应用程序的标识符。使用 appName 连接字符串选项设置 appName 字段的自定义值。

currentOp.clientMetadata

有关客户端的其他信息。

对于多文档事务, client会存储有关在事务中运行操作的最新客户端的信息。

currentOp.currentOpTime

操作的开始时间。

版本 3.6 中的新增功能

currentOp.effectiveUsers

包含与操作关联的每个用户的文档的数组。每个用户文档都包含 user 名称和身份验证 db

提示

另请参阅:

4.2 版本中的新增功能

currentOp.runBy

一个数组,其中包含模拟effectiveUser(s)进行操作的每个用户的文档。 runBy 文档包含user名称和身份验证db 。一般来说,runBy 用户是__system用户;例如

"runBy" : [
{
"user" : "__system",
"db" : "local"
}
]

仅在分片集群上可用

4.2 版本中的新增功能

currentOp.lsid

会话标识符。

仅当操作与会话关联时才存在。

版本 3.6 中的新增功能

currentOp.transaction

一份文档,包含多文档事务信息。

只有当操作是多文档事务的一部分时才会出现。

currentOp.transaction.parameters

一份文档,包含多文档事务的信息。

只有当操作是多文档事务的一部分时才会出现。

currentOp.transaction.parameters.txnNumber

事务编号。

只有当操作是多文档事务的一部分时才会出现。

currentOp.transaction.parameters.autocommit

布尔标志,表明事务是否开启了自动提交。

只有当操作是多文档事务的一部分时才会出现。

currentOp.transaction.parameters.readConcern

事务的读关注

多文档事务支持读关注 "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

有关以下任一信息:

  • 用于跨多个分片写入操作的事务的提交协调指标。

    提交协调由分片处理, currentOp (在mongos或分片成员上运行)仅返回该分片当前正在协调的那些事务的分片协调信息。

    要仅过滤提交协调指标:

    db.currentOp( { desc: "transaction coordinator" })
  • 由事务协调器生成的特定提交协调操作(即currentOp.typeopcurrentOp.desc"TransactionCoordinator" )。

4.2.1 版本中的新增内容

currentOp.twoPhaseCommitCoordinator.lsid

多分片事务的会话标识符。

lsidtxnNumber的组合标识了事务。

可用于提交协调指标和特定协调操作。

4.2.1 版本中的新增内容

currentOp.twoPhaseCommitCoordinator.txnNumber

多分片事务的交易编号。

txnNumberlsid的组合标识了事务。

可用于提交协调指标和特定协调操作。

4.2.1 版本中的新增内容

currentOp.twoPhaseCommitCoordinator.action

事务协调器生成的特定提交协调操作:

  • "sendingPrepare"

  • "sendingCommit"

  • "sendingAbort"

  • "writingParticipantList"

  • "writingDecision"

  • "deletingCoordinatorDoc"

仅适用于特定协调操作。

currentOp.twoPhaseCommitCoordinator.startTime

action的开始日期和时间。

仅适用于特定协调操作。

4.2.1 版本中的新增内容

currentOp.twoPhaseCommitCoordinator.numParticipants

参与本次提交的分片数量。

仅适用于提交协调指标。

4.2.1 版本中的新增内容

currentOp.twoPhaseCommitCoordinator.state

提交协调过程的当前步骤/状态。

步骤/阶段
说明
inactive
不是提交的主动部分。
writingParticipantList
写入属于该多分片事务的分片列表的本地记录。
waitingForVotes
等待参与者通过投票作出提交或终止响应。
writingDecision
写入协调器根据投票作出提交或终止决定的本地记录。
waitingForDecisionAck
等待参与者确认协调器提交或中止的决定。
deletingCoordinatorDoc
删除提交决策的本地记录。

仅适用于提交协调指标。

另请参阅currentOp.twoPhaseCommitCoordinator.stepDurations

4.2.1 版本中的新增内容

currentOp.twoPhaseCommitCoordinator.commitStartTime

提交操作的开始日期和时间。

仅适用于提交协调指标。

4.2.1 版本中的新增内容

currentOp.twoPhaseCommitCoordinator.hasRecoveredFromFailover

一个布尔值,指示提交协调是否由于协调提交的分片故障转移而重新启动。

如果hasRecoveredFromFailover为 true,则currentOp.twoPhaseCommitCoordinator.stepDurations中指定的时间可能不适用于所有步骤。

仅适用于提交协调指标。

4.2.1 版本中的新增内容

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

4.2.1 版本中的新增内容

currentOp.twoPhaseCommitCoordinator.decision

包含提交/中止决策的文档,例如:

  • 对于提交决策:

    "decision" : {
    "decision" : "commit",
    "commitTimestamp" : Timestamp(1572034669, 3)
    }
  • 对于中止决策:

    "decision" : {
    "decision" : "abort",
    "abortStatus" : {
    "code" : 282,
    "codeName" : "TransactionCoordinatorReachedAbortDecision",
    "errmsg" : "Transaction exceeded deadline"
    }
    }

仅适用于提交协调指标。

4.2.1 版本中的新增内容

currentOp.twoPhaseCommitCoordinator.deadline

必须完成提交的日期和时间。

仅适用于提交协调指标。

4.2.1 版本中的新增内容

currentOp.opid

操作的标识符。您可以将此值传递给 { 中的db.killOp() {mongosh } 以终止操作。

警告

终止正在运行的操作时要格外小心。仅使用 db.killOp() 来终止客户端发起的操作,而不会终止数据库内部操作。

currentOp.active

布尔值,指定操作是否已启动。如果操作已启动,则值为 true;如果操作处于空闲状态(例如空闲连接或当前空闲的内部线程),则值为 false。即使该操作已让位于另一个操作,该操作仍可处于活动状态。对于某些不活动的后台线程,例如不活动的 signalProcessingThread,MongoDB 会抑制各种空字段。

currentOp.secs_running

操作的持续时间(以秒计)。MongoDB 通过从操作开始时间减去当前时间来计算此值。

仅在操作正在运行时显示;即如果activetrue

currentOp.microsecs_running

操作的持续时间(以微秒计)。MongoDB 通过从操作开始时间减去当前时间来计算此值。

仅在操作正在运行时显示;即如果activetrue

currentOp.op

标识特定操作类型的字符串。仅当currentOp.typeop时才出现。

可能的值为:

  • "none"

  • "update"

  • "insert"

  • "query"

  • "command"

  • "getmore"

  • "remove"

  • "killcursors"

"query" 操作包括读取操作。

"command" 操作包括大多数命令,比如 createIndexesfindAndModify

currentOp.ns

该操作所针对的命名空间。命名空间由数据库名称和集合名称组成,通过一个点 (.) 连接起来;即 "<database>.<collection>"

currentOp.command

包含与此操作相关的完整命令对象的文档。

例如,以下输出包含在 test 数据库中 items 集合上执行的 find 操作的命令对象:

"command" : {
"find" : "items",
"filter" : {
"sku" : 1403978
},
...
"$db" : "test"
}

以下示例输出包含 getMore 操作的命令对象,该命令对象由游标 ID 为 19234103609 的命令在名为 test 的数据库中名为 items 的集合上生成:

"command" : {
"getMore" : NumberLong("19234103609"),
"collection" : "items",
"batchSize" : 10,
...
"$db" : "test"
},

如果命令文档的大小超过 1 KB,则文档的格式如下:

"command" : {
"$truncated": <string>,
"comment": <string>
}

$truncated 字段包含文档的字符串概要,不包括文档的 comment 字段(如果存在)。如果概要仍然超过 1 KB,则会进一步截断,在字符串末尾用省略号 (...) 表示。

如果将注释传递给操作,则会出现comment字段。注释可以附加到任何数据库命令。

currentOp.planSummary

指定该游标使用集合扫描 (COLLSCAN) 还是索引扫描 (IXSCAN { ... })。

IXSCAN 还包括所使用索引的规范文档。

currentOp.prepareReadConflicts

当前操作必须等待带有写入操作的准备事务才能提交或中止的次数。

等待过程中,当前操作会继续保存任何必要的锁和存储引擎资源。

4.2 版本中的新增功能

currentOp.writeConflicts

当前操作与同一文档上另一个写入操作发生冲突的次数。

4.2 版本中的新增功能

currentOp.cursor

4.2 版本中的新增功能

包含getmore操作的游标信息的文档;即,其中opgetmore

如果在getmore访问其游标信息之前报告getmore操作,则cursor字段不可用。

currentOp.cursor.cursorId

4.2 版本中的新增功能

游标的 ID。

currentOp.cursor.createdDate

4.2 版本中的新增功能

创建游标的日期和时间。

currentOp.cursor.lastAccessDate

4.2 版本中的新增功能

上次使用游标的日期和时间。

currentOp.cursor.nDocsReturned

4.2 版本中的新增功能

游标返回的累计文档数量。

currentOp.cursor.nBatchesReturned

4.2 版本中的新增功能

游标返回的累计批处理数。

currentOp.cursor.noCursorTimeout

4.2 版本中的新增功能

此标记指示游标空闲时未超时;即,如果游标设置了 noTimeout 选项。

  • 如果为 true,则游标在空闲时不会超时。

  • 如果为 false,则游标在空闲时将超时。

提示

另请参阅:

currentOp.cursor.tailable

4.2 版本中的新增功能

此标记指示游标是否为固定大小集合的可追加游标。在客户端用尽初始游标中的结果后,可追加游标将保持打开状态。

currentOp.cursor.awaitData

4.2 版本中的新增功能

此标记指示可追加游标在等待新数据时是否应暂时阻止游标上的 getMore 命令,而不是不返回任何数据。

对于不可追加的游标,该值始终为 false。

currentOp.cursor.originatingCommand

4.2 版本中的新增功能

originatingCommand 字段包含最初创建该游标的完整命令对象(即 findaggregate)。

注意

从版本 4.2 开始,MongoDB 现在将originatingCommand字段作为嵌套字段返回到新的cursor字段中。 在以前的版本中, originatingCommand是关联的"getmore"文档的顶级字段。

currentOp.cursor.planSummary

4.2 版本中的新增功能

指定该游标使用集合扫描 (COLLSCAN) 还是索引扫描 (IXSCAN { ... })。

IXSCAN 还包括所使用索引的规范文档。

currentOp.cursor.operationUsingCursorId

4.2 版本中的新增功能

使用游标进行操作的 opid

仅当游标不空闲时才出现。

currentOp.waitingForLatch

仅当操作正在等待获取内部锁定原语(也称为闩锁)或等待满足内部条件时, waitingForLatch文档才可用。

例如,

"waitingForLatch" : {
"timestamp" : ISODate("2020-03-19T23:25:58.412Z"),
"captureName" : "FutureResolution",
},
输出字段
说明
timestamp
操作开始等待的日期和时间。
captureName
当前操作受阻的区段的内部名称。

版本 4.2.2 中的新增功能

currentOp.locks

locks文档报告操作当前持有的锁的类型和模式。可能的锁类型如下:

锁类型
说明
ParallelBatchWriterMode

代表并行批量写入模式的锁。

在早期版本中,PBWM 信息作为 Global 锁信息的一部分进行报告。

4.2 版本中的新增功能

ReplicationStateTransition

表示副本集节点状态转换采用的锁。

4.2 版本中的新增功能

Global
代表全局锁定。
Database
代表数据库锁。
Collection
代表集合锁。
Mutex
代表互斥锁。
Metadata
代表元数据锁。
oplog
表示 oplog 上的锁。

可能的模式如下:

锁模式
说明
R
代表共享(S)锁。
W
代表独占 (X) 锁。
r
代表意向共享(IS)锁。
w
代表意图独占 (IX) 锁。
currentOp.waitingForLock

返回一个布尔值。如果操作正在等待锁,则waitingForLocktrue ;如果操作具有所需的锁,则为false

currentOp.msg

msg提供了一条描述操作状态和进度的消息。对于索引或 mapReduce 操作,该字段报告完成百分比。

currentOp.progress

报告 mapReduce 或索引操作的进度。 progress字段对应于msg字段中的完成百分比。 progress指定以下信息:

currentOp.progress.done

报告已完成的数量。

currentOp.progress.total

报告总数。

currentOp.killPending

如果该操作当前被标记为待终止,则返回 true。该操作在遇到下一个安全终止点时,将会终止。

currentOp.numYields

numYields 是计数器,用于报告为让其他操作完成而让出的操作次数。

通常,当操作需要访问 MongoDB 尚未完全读入内存的数据时,它们就会让出。这使得在 MongoDB 读取让出操作的数据时,其他已经在内存中有数据的操作可以完成。

currentOp.dataThroughputLastSecond

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 锁定数据库。

仅在锁定时出现;即如果fsyncLocktrue

currentOp.info

有关如何从db.fsyncLock()解锁数据库的信息。仅当fsyncLocktrue时才会出现。

currentOp.lockStats

对于每种锁类型和模式(有关锁类型和模式的说明,请参阅currentOp.locks ),返回以下信息:

currentOp.lockStats.acquireCount

该操作在指定模式下获取锁的次数。

currentOp.lockStats.acquireWaitCount

由于锁处于冲突模式而导致该操作必须等待acquireCount锁获取的次数。 acquireWaitCount小于或等于acquireCount

currentOp.lockStats.timeAcquiringMicros

操作获取锁所需等待的累计时间(以微秒为单位)。

timeAcquiringMicros除以acquireWaitCount得出特定锁模式的大致平均等待时间。

currentOp.lockStats.deadlockCount

该操作在等待锁获取时遇到死锁的次数。

currentOp.waitingForFlowControl

一个布尔值,指示操作是否正在等待流控制。

4.2 版本中的新增功能

currentOp.flowControlStats

此操作的流量控制统计信息。

4.2 版本中的新增功能

currentOp.flowControlStats.acquireCount

该操作获取票证的次数。

4.2 版本中的新增功能

currentOp.flowControlStats.acquireWaitCount

此操作等待获取票证的次数。

4.2 版本中的新增功能

currentOp.flowControlStats.timeAcquiringMicros

此操作等待获取票证的总时间。

4.2 版本中的新增功能

currentOp.totalOperationTimeElapsed

当前重新分片操作所用的总时间(秒)。开始新的重新分片操作时,时间设置为 0。

仅当正在进行重新分片操作时才存在。

版本 5.0 中的新增功能

currentOp.remainingOperationTimeEstimated

remainingOperationTimeEstimatedSecs:当前重新分片操作的预计剩余时间(以秒为单位)。当新的重新分片操作开始时,将返回 -1

开始于:

  • MongoDB 5.0,但在 MongoDB 6.1 之前,remainingOperationTimeEstimatedSecs 仅在重新分片操作期间在接收分片上可用。

  • MongoDB 6.1,在重新分片操作期间,协调器上也可以使用 remainingOperationTimeEstimatedSecs

重新分片操作按顺序执行以下阶段:

  1. 克隆阶段复制当前的集合数据。

  2. 追赶阶段将所有待处理的写入操作应用于重新分片的集合。

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

当前重新分片操作的应用步骤所用的总时间(以秒为单位)。在应用步骤中,接收分片应用 oplog 条目,根据来自发送分片的新传入写入来修改其数据。开始新的重新分片操作时,时间设置为 0。

仅在执行重新分片操作时出现在接收分片上。

版本 5.0 中的新增功能

currentOp.countWritesDuringCriticalSection

在当前重新分片操作的关键部分中执行的写入次数。 关键部分可防止对当前正在重新分片的collection进行新的传入写入。开始新的重新分片操作时,该数字将被设置为 0。

仅在执行重新分片操作时才出现在发送分片上。

版本 5.0 中的新增功能

currentOp.totalCriticalSectionTimeElapsed

当前重新分片操作的关键部分所用的总时间(以秒为单位)。关键部分可防止对当前正在重新分片的集合进行新的传入写入。开始新的重新分片操作时,时间设置为 0。

仅在执行重新分片操作时才出现在发送分片上。

版本 5.0 中的新增功能

currentOp.donorState

重新分片操作中发送分片的当前状态。当新的重新分片操作开始时,该状态将被设置为 unused

仅在执行重新分片操作时才出现在发送分片上。

说明
unused
重新分片操作即将开始或从主节点故障转移中恢复。
preparing-to-donate
源分片正准备向接收分片提供数据。
donating-initial-data
发送分片正在向接收分片发送数据。
donating-oplog-entries
发送分片正在向接收分片发送 oplog 条目。
preparing-to-block-writes
发送分片即将阻止对正在重新分片的集合进行新的传入写入操作。
error
重新分片操作过程中发生错误。
blocking-writes
发送分片正在阻止新的传入写入操作,并且发送分片已通知所有接收分片新的传入写入已禁止。
done
发送分片已经删除旧的分片集合,重新分片操作已完成。

版本 5.0 中的新增功能

currentOp.recipientState

重新分片操作中接收分片的当前状态。当新的重新分片操作开始时,该状态将被设置为 unused

仅在执行重新分片操作时才出现在发送分片上。

说明
unused
重新分片操作即将开始或从主节点故障转移中恢复。
awaiting-fetch-timestamp
接收分片正在等待发送分片做好发送数据的准备。
creating-collection
接收分片正在创建新的分片集合。
cloning
接收分片正在接收来自发送分片的数据。
applying
接收分片正在应用 oplog 条目,以根据来自发送分片的新传入写入来修改数据副本。
error
重新分片操作过程中发生错误。
strict-consistency
接收分片将所有数据更改存储在临时集合中。
done
重新分片操作已完成。

版本 5.0 中的新增功能

currentOp.coordinatorState

当前重新分片操作的重新分片协调器的状态。重新分片协调器是在配置服务器主节点上运行的操作。当新的重新分片操作开始时,该状态将被设置为 unused

仅存在于协调配置服务器上。

说明
unused
重新分片操作即将开始或从主节点故障转移中恢复。
initializing
重新分片协调器已将协调器文档插入 config.reshardingOperations 中,并将 reshardingFields 添加到原始集合的 config.collections 条目中。
preparing-to-donate

重新分片协调器

  • 已为临时重新分片集合创建了一个 config.collections 条目。

  • 已在 config.chunks 中插入了基于新分片键的范围条目。

  • 已将条目插入到与新分片键关联的任何区域的 config.tags 中。

协调器通知参与分片开始重新分片操作。然后,协调器将等待,直到所有发送分片都选择了一个 minFetchTimestamp 并准备好发送。

cloning
重新分片协调节点通知发送分片将数据发送给接收分片。协调节点等待所有接收分片完成对发送分片数据的克隆。
applying
重新分片协调器通知接收分片根据来自发送分片的新传入写入来修改其数据副本。协调器等待所有接收分片完成应用 oplog 条目。
blocking-writes
重新分片协调节点通知发送分片,以防止对正在重新分片的集合进行新的传入写入操作。然后,协调节点等待所有接收分片进行所有数据更改。
aborting
在重新分片操作或运行 abortReshardCollection 命令(或 sh.abortReshardCollection() 方法)期间出现不可恢复的错误。
committing
重新分片协调器删除了临时重新分区集合的 config.collections 条目。然后,协调器将 recipientFields 添加到源集合的条目中。

版本 5.0 中的新增功能

currentOp.opStatus

重新分片操作的当前状态。

仅在执行重新分片操作时出现。操作完成后,该操作将从 currentOp 输出中删除。

说明
actively running
重新分片操作正在主动运行。
success
重新分片操作已成功。
failure
重新分片操作失败。
canceled
重新分片操作已取消。

版本 5.0 中的新增功能

← createIndexes
删除 →