mongodb-查看当前数据库动态
来源:互联网 发布:人工智能的威胁 编辑:程序博客网 时间:2024/05/22 01:37
一、查看当前的操作
1、db.currentOp()
currentOp会将后端Mongod上正在执行的请求都列出来,也可根据查询条件(如请求类型,请求是否正在等待锁,请求操作的DB或collection)来进行过滤。
example:
查询连接到db1上的操作时间大于3s的操作:
db.currentOp( { "active" : true, "secs_running" : { "$gt" : 3 }, "ns" : /^db1\./ })
output example:
{ "inprog": [ { "desc" : <string>, "threadId" : <string>, "connectionId" : <number>, "opid" : <number>, "active" : <boolean>, "secs_running" : <NumberLong()>, "microsecs_running" : <number>, "op" : <string>, "ns" : <string>, "query" : <document>, "insert" : <document>, "planSummary": <string>, "client" : <string>, "msg": <string>, "progress" : { "done" : <number>, "total" : <number> }, "killPending" : <boolean>, "numYields" : <number>, "locks" : { "Global" : <string>, "MMAPV1Journal" : <string>, "Database" : <string>, "Collection" : <string>, "Metadata" : <string>, "oplog" : <string> }, "waitingForLock" : <boolean>, "lockStats" : { "Global": { "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) } }, "MMAPV1Journal": { ... }, "Database" : { ... }, ... } }, ... ], "fsyncLock": <boolean>, "info": <string>}输出中的重要字段:
opid:
操作的唯一标识,可以在mongo shell中通过db.killOp(opid)终止一个操作。
active:
表示操作是否正在运行。如果该字段值为false,表示该操作已经交出或者整在等待其他操作交出锁。
secs_running:
表示该操作已经运行的时长,可通过该字段判断慢查询。
op:
表示操作的类型,通常是查询、插入、更新、删除的一种。注意数据库命令也被当做查询操作来处理。
WaitingForLock:
表示该操作是否因正在等待其他操作交出锁而处于等待状态。
numYields:
表示操作交出锁而使其他操作得以运行的次数。通常进行文档搜索的操作(查询、更新和删除)可以交出锁。
2、db.killOp()
可以db.killOp(opid)终止操作。
并非所有的操作都可以被终止,只有交出了锁的进程的才能被终止,正在占用锁,或者正在等待其他操作交出锁的操作通常无法被终止。
二、计算空间消耗
1、查看文档大小
Object.bsonsize({_id:ObjectId()})
2、查看数据库信息
db.stats()
MongoDB Enterprise > db.stats(){ "db" : "test", "collections" : 1, "objects" : 2000, "avgObjSize" : 33, "dataSize" : 66000, "storageSize" : 73728, "numExtents" : 0, "indexes" : 1, "indexSize" : 49152, "ok" : 1}MongoDB Enterprise >可以在stats中传入比例因子:KB的值为1024,MB为1024*1024,以此类推
MongoDB Enterprise > db.stats(1024){ "db" : "test", "collections" : 1, "objects" : 2000, "avgObjSize" : 33, "dataSize" : 64.453125, "storageSize" : 72, "numExtents" : 0, "indexes" : 1, "indexSize" : 48, "ok" : 1}MongoDB Enterprise >
3、查看集合信息
db.collection.stats()
4、mongotop 和 mongostat
mongodb自带几个命令行工具,可以每个几秒输出当前的状态。
yangweideMacBook-Pro:~ yangwei$ mongostatinsert query update delete getmore command % dirty % used flushes vsize res qr|qw ar|aw netIn netOut conn time *0 *0 *0 *0 0 1|0 0.0 0.0 0 2.46G 30.0M 0|0 0|0 79b 18.5k 2 2016-10-14T11:19:53+08:00 *0 *0 *0 *0 0 1|0 0.0 0.0 1 2.46G 30.0M 0|0 0|0 79b 18.5k 2 2016-10-14T11:19:54+08:00 *0 *0 *0 *0 0 1|0 0.0 0.0 0 2.46G 30.0M 0|0 0|0 79b 18.5k 2 2016-10-14T11:19:55+08:00 *0 *0 *0 *0 0 1|0 0.0 0.0 0 2.46G 30.0M 0|0 0|0 79b 18.5k 2 2016-10-14T11:19:56+08:00 *0 *0 *0 *0 0 1|0 0.0 0.0 0 2.46G 30.0M 0|0 0|0 79b 18.5k 2 2016-10-14T11:19:57+08:00 *0 *0 *0 *0 0 1|0 0.0 0.0 0 2.46G 30.0M 0|0 0|0 79b 18.5k 2 2016-10-14T11:19:58+08:00 *0 *0 *0 *0 0 1|0 0.0 0.0 0 2.46G 30.0M 0|0 0|0 79b 18.5k 2 2016-10-14T11:19:59+08:00 *0 *0 *0 *0 0 1|0 0.0 0.0 0 2.46G 30.0M 0|0 0|0 79b 18.5k 2 2016-10-14T11:20:00+08:00 *0 *0 *0 *0 0 1|0 0.0 0.0 0 2.46G 30.0M 0|0 0|0 79b 18.5k 2 2016-10-14T11:20:01+08:00 *0 *0 *0 *0 0 1|0 0.0 0.0 0 2.46G 30.0M 0|0 0|0 79b 18.5k 2 2016-10-14T11:20:02+08:00mongostat默认每秒输出一次,可传入参数更改时间间隔
yangweideMacBook-Pro:~ yangwei$ mongostat 2 # 每隔2s输出一次
输出说明:
insert query update delete getmore command 每种操作发生的次数
flushes mongod将数据刷新到磁盘的次数
vsize mongod正在使用的虚拟内存的大小,通常为数据目录的2倍大小(一次用于映射文件,一次用于日记系统)
res mongod正在使用的内存的大小,通常该值应该尽量接近机器所有内存的大小。
qr | qw 读写操作队列大小,即有多少读写操作被阻塞,等待进行处理。
ar | aw 活动客户端的数量,即正在进行读写操作的客户端。
netIn 通过网络传输进来的字节数。
netOut 通过网络传输出去的字节数。
conn 此服务器打开的连接数,包括输入和输出的连接。
- mongodb-查看当前数据库动态
- 查看mongodb 当前任务
- Oracle查看当前数据库
- 查看当前数据库版本
- Oracle查看当前数据库
- Oracle查看当前数据库
- 查看当前数据库情况
- MySQL查看当前数据库
- MySQL查看当前数据库
- mongodb查看当前操作db.currentOp()
- 查看mongodb当前配置的命令
- ubuntu 16.04查看mongoDB数据库
- 查看当前数据库的触发器
- 查看当前连接数据库 sid
- 查看ORACLE数据库当前版本
- MySQL查看当前数据库库
- 查看sqlserver数据库当前死锁
- MySQL 查看当前所用数据库
- 怎么实现代码的重用性?
- Java 7并发编程(小结)
- plsqldev连接远程oracle
- jsp页面request.getAttribute("employeeList") 为null
- MDZZ我只想吐槽而已
- mongodb-查看当前数据库动态
- ios 阻止用户输入表情
- 第七周项目4-队列数组
- UncaughtExceptionHandler 使用遇到的问题
- Java分页
- UIImageView的显示模式(contentMode属性)
- mysql #1170错误(42000) BLOB/TEXT Column Used in Key Specification Without a Key Length
- leetcode-404. Sum of Left Leaves 求左叶子节点的和,递归
- 第七周项目3——负数把正数赶出队列