[关闭]
@JunQiu 2018-09-18T13:25:12.000000Z 字数 2922 阅读 1563

微服务浅谈、WiredTigerVsMMAPv1

summary_2018/08 mongodb arch


1、日常工作

1.1、WiredTiger VS MMAPv1
1.2、微服务架构体系浅读

2、技术学习

2.1、WiredTiger VS MMAPv1
  1. ## 空间分配算法不同(write)
  2. MMAPv1使用的是线性存储。为了使得同一个文档的数据在磁盘上也保持在相同的位置上, 我们需要解决 “当对文档进行更新时, 如果文档是无缝紧密排列的, 那么多出的空间就需要被放在磁盘的别处” 这一问题。MMAPv1是这样解决的:
  3. 在写入时, MMAPv1会为文档预分配一定的磁盘空间, 32KB, 64KB, ..., 2MB, 如果文档超过2MB, 则会自动向上fix2MB的倍数。当然,文档大小不能超过16MB的限制。而预分配空间和文档实际占用的磁盘大小之间的差值, 会用Padding来补足。(3.0以前使用填充因子)
  4. Tips:由于新引擎WiredTiger使用的是BTree存储, 不是线性存储, 所以压根不需要Padding
  5. ## 并发级别
  6. MMAPv13.0之前仅支持数据库级别,3.0之后,支持集合级别。
  7. WiredTiger通过MVCC实现文档级别的并发控制,即文档级别锁。
  8. ## 压缩支持
  9. WiredTiger的数据是经过压缩的, MMAPv1中是没有经过压缩的。 默认情况下使用 Google Snappy进行压缩。Snappy的特点是快,比大多数算法要快很多,而只牺牲了一点点压缩率。WiredTiger还支持zlib压缩,这样会比Snappy压缩率高一点点, 但速度慢很多。当然,你也可以设定为和MMAPv1一样, 不压缩。
  10. ## cache
  11. WT引擎使用了二阶缓存WiredTiger Cache, File System Cache来保证Disk上的数据的最终一致性。
  12. 每隔60秒, 或当Journal文件超过2GB, 会有一个叫Checkpoints的事件, WT会把WT Cache中的数据存入FS Cache, 然后一次性将所有改变应用到磁盘上。换言之, 如果你既没有用Replica Set, 也没有用Journal。那么在你宕机的时候仍然能从最后一个Checkpoints恢复数据。

2.2、微服务架构浅读
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注