共计 819 个字符,预计需要花费 3 分钟才能阅读完成。
两种存储引擎
WiredTiger 存储引擎,默认
In-memory 内存存储引擎
WiredTiger
文档级并发模型
反对多个客户端同时批改汇合的不同文档。
快照和检查点 checkpoint
WiredTiger 应用 MultiVersion(MVVC)并发管制。
检查点能够充当复原点
日志 Journal
日志与检查点联合应用,确保数据持久性。日志保留检查点之间的数据批改
日志通过疾速压缩库进行压缩,通过 storage.wiredTiger.engineConfig.journalCompressor 配置压缩算法或不压缩。
压缩
MongoDB 反对对汇合和索引压缩,压缩能够缩小存储空间,但减少 CPU 开销。
MongoDB Wiredtiger 存储引擎实现原理:https://mongoing.com/archives/2540
MongoDB 存储引擎 WiredTiger 原理解析:https://mongoing.com/archives/5367
In-Memory 内存存储引擎
文档级并发模型
同样反对文档级并发
持久性
没有长久化反对,所有数据均在内存中,包含应用程序数据和零碎数据,例如用户,权限,索引,正本集配置,分片群集配置等。
日志性能不实用内存引擎
日志
应用日志记录的复原过程:
1. 在数据文件中查找最初一个检查点 checkpoint 的标识符。
2. 在日记 journal 文件中搜寻与最初一个检查点 checkpoint 的标识符匹配的记录。
3. 从上一个检查点 checkpoint 开始,将操作利用于日志文件。
应用日志性能,WiredTiger 为每个客户端发动的写操作创立一个日记记录。日志记录包含由初始写入引起的任何外部写入操作。
例如,对汇合中文档的更新可能会导致对索引的批改;WiredTiger 创立单个日志记录,其中蕴含更新操作及其关联的索引批改。
https://docs.mongoing.com/cun-chu/journaling
本文由 mdnice 多平台公布