mongo数据库工具
mongo提供的方法
mongostat实时检测mongod的当前运行状态
- 命令: mongostat -h 127.0.0.1:27017 -u liebao -p liebao
- dirty脏数据 used使用率
- flushes异步写入的次数
- vsize虚拟内存使用 res物理内存使用
- qrw等待读写队列 arw激活读写操作数量
- net_in数据库收到的网络请求 net_out数据库发送的网络请求 conn打开的连接数 time 时间
mongotop 提供实时跟踪每个集合的统计数据
- 命令:mongotop -h 127.0.0.1:27017 -u liebao -p liebao
- ns数据库集合的命名空间
- total在这个命令空间所以操作花费总时间、
- read在这个命令空间上mongod执行读操作花费的时间
- write在这个命令空间上mongod执行读操作花费的时间
- 当前时间
指令方法
profile设置步骤
- (1)db.setProfilingLevel(n) 0:默认关闭 1:设置间隔时间 2:设置全部,在全部的情况下,systemprofile会比较大有一定的性能消 耗,所以需要设置慢请求:只显示>1000ms的操作,即:db.setProfilingLevel(1,1000)
- (2)在system.profile库查找,比如说最近3条:db.system.profile.find().sort({“ts”:-1}).limit(3)
- (3)查看keysExamined:所扫描的索引键记录数、docsExamined、nreturned:返回的文档数、responseLength:返回结果集的大小
检测数据库和字段大小
- 检测数据库的大小、某文档的所有字段大小:python cal_db_size.py 方法和下面这个类似len(bson.BSON.encode(db.col.findOne({id:xxxx})))
- 或者直接mongo客户端输入:Object.bsonsize(db.col.findOne({_id: x1}))
db.stats()获取当前数据库的信息
- db名字
- collections文档数量
- indexSize索引大小
- indexNum索引数量
- dataSize数据大小
- storageSize占用磁盘大小。
db.serverStatus() 针对全库级别的命令
- host:名字、version:版本、pid:进程id、mem:内存信息、locks:锁信息、storage磁盘信息
- totalIndexSize:索引总大小
- opcounters:操作计数器(insert query update delete getmore command索引操作总数)
- conntections:连接数(当前数、可连接数、创建数)
- network网络具体:“bytesIn”: 3745554, “bytesOut”: 6255104等
- wireTiger:存储引擎具体信息包括cache、conntection、cursor、log、lock、session等
- metircs里面包括commands 显示了每条命令的使用总次数和失败次数
- document文档数:(insert数 update数 delete数 return数)
- indexCounters索引计数器:访问次数 miss次数 命中次数 重置次数 miss率
db.col.stats() 针对当前col集合的状态命令
- ns:集合的命名空间、size:大小、
- count:文档数量、avgObjSize:平均每个文档的大小、totalIndexSize:索引总大小
- wireTiger:存储引擎具体信息包括cache、conntection、cursor、btree、session等
(wiredTiger[“block-manager”][“file bytes available for reuse”] 能隔预估compact能回收多少空间) - nindexes:几个索引
- indexSizes: {…} 索引具体内容
- 如果只看某个文档的某个参数可以用:db.col.dataSize()数据大小 totalSize()总大小 totalIndexSize()索引总大小 storageSize()存盘大小
查看当前执行操作
- 如果当前数据库被某指令(如查找)卡住了,需要运行db.currentOp():查看数据库当前执行什么操作,用于查看长时间运行进程。
kill操作
- 如果当前操作太长需要丢弃的话,则db.killOp(id)杀掉