如果您正在使用MMAPv1存储引擎,则更新可能会导致文档在文档大小增加时在磁盘上移动。但是,使用WiredTiger存储引擎时,文档的增长或缩小是否会导致性能问题?如果是这样,推荐的处理方法是什么?
触发此问题的集合包含的文档可能会在 x kB 和 3x kB 之间发生变化。
答案 0 :(得分:1)
我正在阅读MongoDB网站上的WiredTiger文档:https://docs.mongodb.com/manual/core/wiredtiger/
它包含有关WiredTiger如何工作的一些有价值的信息(阅读文档中的所有句子):
WiredTiger使用MultiVersion并发控制(MVCC)。在操作开始时,WiredTiger提供了一个时间点快照 交易数据。快照呈现一致的视图 内存数据。
写入磁盘时,WiredTiger会将所有数据写入快照[...]
MongoDB配置WiredTiger来创建检查点(即写入 快照数据到磁盘)间隔为60秒或2千兆字节 期刊数据。
因此,WiredTiger将所有操作(插入,更新,删除)写入快照日志,然后将其保存到磁盘evey 60s或2Gb。当然,如果它崩溃,将在启动时读取快照。 它接近事件日志的工作方式。因为它没有替换现有的数据(它只是在快照中写入新版本的数据然后检查点进程将在以后替换旧的数据)没有惩罚成本,因为用更大的文件替换文档之一。
当然,如果您想确定,请测试它,因为它是100%确定的唯一方法。