翻译或纠错本页面

确保索引与内存相适应

为了达到更快的处理效果,请确保您的索引能完整地和内存相适应,这样可以避免从磁盘上读取索引。

可以使用帮助函数 db.collection.totalIndexSize() 来检查索引的大小,返回的数值单位是字节:

> db.collection.totalIndexSize()
4294976499

上述例子展示了一个几乎4.3GB的索引。为了确保索引与内存相适应,您不仅需要有那么多足够可用的内存用于索引,还要有足够的内存用于剩下的 working set 。还有请记住:

如果您拥有且使用多个集合,您必须考虑所有集合的所有索引的大小。所有的索引和工作集(working set)在同一时刻必须能与内存相适应。

还有一些受限制的情况下索引不需要和内存相适应。参见 只在内存中存储最近的数据的索引 了解更多。

只在内存中存储最近的数据的索引

Indexes do not have to fit entirely into RAM in all cases. If the value of the indexed field increments with every insert, and most queries select recently added documents; then MongoDB only needs to keep the parts of the index that hold the most recent or “right-most” values in RAM. This allows for efficient index use for read and write operations and minimize the amount of RAM required to support the index.