db.currentOp() 命令详解

db.currentOp() 是 MongoDB shell 中用于查看当前正在执行的操作的命令。它返回一个文档,列出当前数据库实例中所有正在运行的操作的详细信息。这对于诊断性能问题和识别长时间运行的操作非常有用。

输出字段解释
db.currentOp() 返回的结果是一个包含操作信息的文档,具体字段可能包括:

opid: 操作 ID,唯一标识每个操作,可以用来终止特定操作。
active: 布尔值,指示操作是否正在运行。
secs_running: 操作已运行的时间(以秒为单位)。
microsecs_running: 操作已运行的时间(以微秒为单位)。
op: 操作类型,例如 query、insert、update 等。
ns: 操作涉及的命名空间(数据库和集合),格式为 database.collection。
query: 查询操作的详细信息,包括查询条件、排序、限制等。
client: 发起操作的客户端地址和端口。
conn: 操作连接的 ID。
locks: 锁信息,指示操作当前持有的锁。
waitingForLock: 布尔值,指示操作是否在等待锁。
msg: 额外的操作状态信息,例如 waiting for lock。
planSummary: 查询计划的简要描述。
numYields: 操作已发生的上下文切换次数。
locksHeld: 操作当前持有的锁的详细信息。
locksPending: 操作当前等待的锁的详细信息。
示例输出
以下是 db.currentOp() 返回结果的示例及解释:

{
  "inprog": [
    {
      "opid": 12345,
      "active": true,
      "secs_running": 120,
      "microsecs_running": NumberLong(120000000),
      "op": "query",
      "ns": "mydb.mycollection",
      "query": {
        "find": "mycollection",
        "filter": {
          "status": "active"
        },
        "limit": 10,
        "sort": {
          "created_at": -1
        }
      },
      "client": "192.168.1.100:27017",
      "conn": 987,
      "locks": {
        "Global": "r",
        "Database": "r",
        "Collection": "r"
      },
      "waitingForLock": false,
      "msg": "",
      "planSummary": "COLLSCAN",
      "numYields": 5,
      "locksHeld": {
        "r": [
          "Global",
          "Database",
          "Collection"
        ]
      },
      "locksPending": {}
    }
  ]
}

详细解释
opid: 操作 ID 为 12345。
active: 操作正在运行。
secs_running: 操作已运行 120 秒。
microsecs_running: 操作已运行 120,000,000 微秒。
op: 操作类型为 query。
ns: 操作涉及的命名空间为 mydb.mycollection。
query: 查询的详细信息,包括查找集合 mycollection,过滤条件为 status: “active”,限制返回 10 条记录,并按 created_at 字段降序排序。
client: 发起操作的客户端地址和端口为 192.168.1.100:27017。
conn: 操作连接 ID 为 987。
locks: 操作当前持有的锁,包括全局读锁(Global: “r”)、数据库读锁(Database: “r”)和集合读锁(Collection: “r”)。
waitingForLock: 操作没有在等待锁。
msg: 无额外的操作状态信息。
planSummary: 查询计划为集合扫描(COLLSCAN)。
numYields: 操作已发生 5 次上下文切换。
locksHeld: 当前持有的锁为全局读锁、数据库读锁和集合读锁。
locksPending: 没有等待的锁。
终止特定操作
使用 db.killOp() 终止特定操作:

db.killOp(12345)

以上就是 db.currentOp() 的详细解释及如何使用它来监控和管理 MongoDB 中的当前操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值