Mongdb for Developers: Week4

2017-02-06 Borg 更多博文 » 博客 » GitHub »

Mongodb

原文链接 https://bigborg.github.io/2017/02/06/mongodb-forDevelopers-wk4/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


Performance

本周的内容基本与上周Mongodb for DBAs: week3重复,重点和之前没有的再记一次好了。

MMAPv1 vs wiredTiger

相比于MMAPv1, wiredTiger支持

  • 文档级别锁,准确的说不叫锁,英文叫document level concurrency
  • 压缩,wiredTiger自己决定内存的时候,哪些页需要从磁盘读出到内存哪些需要写入磁盘,因此可以压缩后再写入。因为文档的key基本会大量重复,所以压缩还是蛮有用的。 不支持
  • in place update 对于内存中某个文档的修改,wiredTiger会将该文档弃用而新开辟内存放新的文档。这个MMAPv1是支持的。

Multikey Indexes(区分multikey 和 compound key)

对于索引 {a:1,b:1} 插入的文档a和b不能同时为列表,但其中一个可以是列表。

When is an index used?

eg. 索引a_1_b_1_c_1, 以下会使用到索引,注意最后两种情形

db.collection.find({a:3})
db.collection.find({a:3,b:4})
db.collection.find({a:3,b:4,c:5})
db.collection.find({a:3,c:5})
db.collection.find({c:3}).sort({a:1,b:1})

Index Size

db.collection.stats() db.collection.indexSize()

Index Design Rule

order: Equality fields, sort fields, range fields

mongotop & mongostat

mongotop 3 每隔3秒输出一次每个集合读写花费时间 mongostat