Mongodb 笔记 —- Application Administration, Profiler,查看对象大小

Mongodb 笔记 —- Application Administration, Profiler,查看对象大小

6 6 月, 2019 阅读 582 字数 1746 评论 0 喜欢 0

查看当前进行中的opreation

db.currentOp()

可以使用find()的方式查询。

db.currentOp({“ns” : “prod.users”})

返回结果参数:

“opid” //opreation id

“active” //完成或者暂停,等待锁(等待锁可以通过下面 waitingForLock参数 查看)

“secs_running” //运行时长

“op” //opreation类型

“desc” //和log中的消息相同, [conn3]等类似的格式

“locks” //锁的类型, ^代表global锁

“waitingForLock” //被block,等待锁

“numYields” //当前opreation暂停的次数。为别的操作释放资源。

“lockstats.timeAcquiringMicros” //获取锁花的时间

“killed” //被杀掉,但是还没有彻底关掉的opreation独有的field

杀掉opreation:

db.killOp(123)

系统产生的慢查询,不需要kill:

  • replication thread
  • sharding的writebacklistener命令

Profiler

作用:将发生的opreation记录到ns 为system.profile的 capped colletction中,用于对服务器状态进行检测。

缺点:明显降低mongod的性能。

system.profile 不存在时,系统会自动创建一个小容量capped collection

可以通过drop, create的方式修改system.profile的cap size

记录的操作:
CRUD
Administrative operations
Configuration operations

关闭/开启Profiler:

> db.setProfilingLevel(2,100) //database level enable

{ “was” : 0, “slowms” : 100, “ok” : 1 }

参数解读:
level 2 代表 记录所有opreation
1代表, 记录超过slowms阈值的query, 默认slowms=100
0代表,关闭profiler
第二位参数即为,设定slowms

查看当前profiler level:

db.getProfilingLevel()

查看Object大小

查看Document大小:

Object.bsonsize({_id:ObjectId()})

Object.bsonsize(db.users.findOne())

查看Collection大小:

db.boards.stats()
db.big.stats(1024*1024*1024*1024)   —-按指定单位显示,1024 for kilobytes, 1024*1024 for megabytes

返回结果参数说明:
“size” // = (“avgObjSize” * “count” )= Object.bsonsize() of all document in the collection
“avgObjSize”
“count”
“storageSize” // 含padding和indexes,空的占位数据。即占用硬盘空间
“nindexes” // index数量

查看collection是否损坏:
db.movies.validate() //损坏如果显示单个document, invalid BSONObj,可以删除document修复collection。 如果是pdfile损坏,基本无法恢复。

Pdfile是mongdb数据存储的核心

查看Database大小:

 db.stats()

返回结果参数说明:
“fileSize” // 硬盘上存这个db的数据文件大小总和
“storageSize” //占用的存储空间,不含空的占位数据
“dataSize” // 真实数据占用的大小。= “storageSize” – “删除的document”
“nsSizeMB” // namespace 文件大小

Keep in mind that listing databases on a system with a high lock percent can be very slow and block other operations. Avoid doing it, if possible.

发表回复

蜀ICP备15005542号