你如何获得每个集合的MongoDB锁信息

时间:2016-03-29 22:07:08

标签: mongodb

有没有办法在MongoDB 3.x中获取每个集合的锁统计信息?

中没有此信息
 db.serverStatus()

理想情况下,我也会保留收藏品名称。

2 个答案:

答案 0 :(得分:2)

db.currentOp()命令可以让您更深入地了解由于当前正在运行的操作而导致的锁定。

以下是命令的示例输出:

查询:

{
    "locks": {"^myDB": "R"},
    "ns": "myDB.bar",
    "op": "query",
    "opid": 1349152,
    "query": {"test": 1},
    "secs_running": 15,
    "waitingForLock": true
 }

更新时间:

  {
    "locks": {
      "^": "w",
      "^local": "W",
      "^myDB": "W"
    },
    "ns": "myDB.bar",
    "op": "update",
    "opid": 1344808,
    "query": {},
    "secs_running": 53,
    "waitingForLock": false
  }

我还没有测试过它,但是这样的东西应该得到一个集合的锁:

db.currentOp(
    {
        $and: [ 
            {"waitingForLock" : true},
            {"ns" : "mydb.mycoll"}
        ]
    }
)

来源:http://blog.mlab.com/2014/02/mongodb-currentop-killop/

答案 1 :(得分:0)

试着看看:

"locks" : {
    "Global" : {
        "acquireCount" : {
            "r" : NumberLong(5776),
            "w" : NumberLong(14),
            "W" : NumberLong(4)
        }
    },
    "Database" : {
        "acquireCount" : {
            "r" : NumberLong(2872),
            "w" : NumberLong(1),
            "R" : NumberLong(7),
            "W" : NumberLong(13)
        }
    },
    "Collection" : {     <-------------- see collection locks
        "acquireCount" : {  
            "r" : NumberLong(2735)
        }
    },

有关更多信息,请访问MongoDB网站上的Collection locks