MongoDB-如何提高创建索引的性能?

MongoDB-如何提高创建索引的性能?,mongodb,performance,indexing,Mongodb,Performance,Indexing,我做了一些测试来在MongoDB上创建索引。我的目标是了解如何缩短构建索引时间。我正在考虑更改“maxIndexBuildMemoryUsageMegabytes”值,以允许mongod使用更多RAM来构建索引。 我做了以下测试,得到了一些有趣的结果: 测试#1 虚拟机内存:2GB 文档大小:1亿个文档(7.7GB数据大小) MaxIndexBuildMemoryUsageMB:500 MB 建立索引花费了2269秒。 测试#2 将MaxIndexBuildMemoryUsageMB更改为8

我做了一些测试来在MongoDB上创建索引。我的目标是了解如何缩短构建索引时间。我正在考虑更改“maxIndexBuildMemoryUsageMegabytes”值,以允许mongod使用更多RAM来构建索引。

我做了以下测试,得到了一些有趣的结果:
测试#1
虚拟机内存:2GB
文档大小:1亿个文档(7.7GB数据大小)
MaxIndexBuildMemoryUsageMB:500 MB
建立索引花费了2269秒。

测试#2
将MaxIndexBuildMemoryUsageMB更改为800 MB
建立索引花费了1865秒
这是我所期望的

测试#3
将文档大小增加到1.5亿(11.642 GB数据库大小)
MaxIndexBuildMemoryUsageMB:500 MB
建立索引花费了6085(1.69小时)

测试#4
与测试3相同,但将MaxIndexBuildMemoryUsageMB更改为800 MB
创建索引花费了26315(7.3小时)。
这不是我所期望的。建立索引后,使用的交换空间为477MB

然后我在另一个虚拟机上进行了尝试,它将提供更多内存和更大的文档大小。

测试#5
虚拟机内存:4GB
文档大小:2亿个文档(15 GB数据大小)
MaxIndexBuildMemoryUsageMB:500 MB
建立索引花费了15032秒。

测试#6
与测试#5相同,但将MaxIndexBuildMemoryUsageMB更改为1GB
建立索引花费了15053秒
它没有缩短构建索引的时间

然后我将文档大小增加到4亿个文档(37GB数据大小)
我在MaxIndexBuildMemoryUsageMB值上尝试了500 MB和1 GB
构建索引时间完全相同


我的问题是:
1.我应该为MaxIndexBuildMemoryUsageMB设置什么?我知道这取决于内存大小与数据大小以及其他因素。
在构建索引时,我可以最大限度地利用内存,但不使用交换,这是一个好的比率。(交换已设置为1)。

2.关于如何提高构建索引性能还有其他想法吗


谢谢

如果您的版本低于4.2,则此参数仅适用于前台进程

从4.2开始,它将用于所有索引构建(前台和后台)。也许你可以检查一下你正在尝试的版本


如果您的版本低于4.2,则此参数仅适用于前台进程

从4.2开始,它将用于所有索引构建(前台和后台)。也许你可以检查一下你正在尝试的版本