该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
About Mongo
MongoDB uses memory mapped files.
This means the the operating system essentially controls what is paged in and out of memory (to and from disk).
The Rules
If your indexes + working set exceed memory, the last recently used pages (sections of memory) will be flushed to disk. This leaves only the most recently used data which still fits in memory readily available.
Your operating system controls this.
While you will experience awful performance if your true working set and indexes do not fit into memory, in practice, the size of one's working set (hot data) is much smaller than their total dataset.
If you don't violate this rule, you should have excellent performance most of the time even though your indexes + total data may exceed the total available memory.
How It Works
If a query is performed that needs data that is not in memory, it will be paged into memory (retrieved from disk) and there will be a performance hit.
Note: this is essentially the situation when the database is first started (cold).
Nothing is in memory to start with, page faults occur when data is required, and data is paged into memory as needed. When you run out of memory, the last recently used pages (chunks) are flushed from memory in favor of hotter (more recently accessed) data.
Also it is worth mentioning that because indexes are used constantly, and thus always recently used, they are virtually never paged out.