摘自本书: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,但没有提及任何内容。
其他提示也没有引用任何来源,所以我想知道这些提示是否有任何依据
答案 0 :(得分:1)
这有什么道理吗?
是的,如果您使用的是MMAPv1存储引擎。
某些更新操作可能会增加文档的大小;例如,如果更新将新字段添加到文档中。
对于MMAPv1存储引擎,如果更新操作导致文档超过当前分配的记录大小,则MongoDB会将文档重新放置在磁盘上并具有足够的连续空间来容纳该文档。需要重定位的更新比不需要重定位的更新要花费更长的时间,尤其是在集合具有索引的情况下。如果集合具有索引,则MongoDB必须更新所有索引条目。因此,对于具有许多索引的集合,此举将影响写入吞吐量。