有关在MongoDB中预填充数据的提示正确吗?

时间:2019-04-02 12:32:15

标签: mongodb

摘自本书:https://www.oreilly.com/library/view/50-tips-and/9781449306779/ch01.html

特别是关于“提示7:请尽可能填充所有内容”。

它声称预填充数据更好,因为

MongoDB does not need to find space for them. It merely updates the values you’ve already entered, which is much faster

这有什么道理吗?我已经检查过MongoDB manual about data modeling,但没有提及任何内容。

其他提示也没有引用任何来源,所以我想知道这些提示是否有任何依据

1 个答案:

答案 0 :(得分:1)

  

这有什么道理吗?

是的,如果您使用的是MMAPv1存储引擎。

https://docs.mongodb.com/manual/core/write-performance/#document-growth-and-the-mmapv1-storage-engine

  

某些更新操作可能会增加文档的大小;例如,如果更新将新字段添加到文档中。

     

对于MMAPv1存储引擎,如果更新操作导致文档超过当前分配的记录大小,则MongoDB会将文档重新放置在磁盘上并具有足够的连续空间来容纳该文档。需要重定位的更新比不需要重定位的更新要花费更长的时间,尤其是在集合具有索引的情况下。如果集合具有索引,则MongoDB必须更新所有索引条目。因此,对于具有许多索引的集合,此举将影响写入吞吐量。