2

据我所知,MongoDB 针对所有数据都放入内存的情况进行了优化。据我了解,GridFS 使用标准集合和所有标准存储方法。是吗?

这是否意味着存储大量数据(在我的情况下为图像),当前内存量更大,它会从内存中取出我的真实数据?

也许 MongoDB 足够聪明,可以降低 GridFS 集合的优先级?

4

1 回答 1

2

MongoDB 使用内存映射文件来管理其数据文件。如果您使用数据,它将保留在内存中。如果您不使用它,它最终将被刷新到磁盘(并在您下次请求时被读回)。如果您需要读取所有数据,最好将其全部放入 RAM 中,否则您的系统可能会进入致命的交换螺旋(当然取决于您的负载)。

如果你只是存储数据而不用它做太多事情,MongoDB 将只使用一小部分内存。例如,在我的一个项目中,总数据集大小超过 300 GB,而 mongo 仅占用 800 MB RAM(因为我几乎不读取数据,只写入数据)。

于 2012-01-11T07:16:37.407 回答