MongoDB 查询

MongoDB 查询

对于相同的数据集和用途,MongoDB 和 MySQL 之间的 RAM 要求如何?(即在完全相同的情况下,各自将使用多少 RAM)?

MongoDB 确实将整个数据库保存在 RAM 中吗?

答案1

mongo 将尝试始终将整个数据库保存在 RAM 中,但由于操作系统需要 RAM 来运行其他应用程序,因此它将释放 mongo 使用的部分。

mongo 需要保留在 RAM 中的东西是索引,以保持快速运行。

在我的应用程序中,mongo 使用的 RAM 比 mysql 少很多,但这实际上取决于您有多少个索引以及数据集的大小。

答案2

Mongo 对于大型数据集的一个主要问题是 Mongo 使用内存映射文件。没有办法限制 Mongo 在一台机器上尝试使用的 RAM 量。因此,它基本上需要一台机器(一个专用的盒子)的全部资源。只有当您的数据很大,尤其是当您的索引大于 RAM 时,这才会成为问题。回答您关于数据的问题,MongodDB 实际上只会尝试将索引保存在 RAM 中。

答案3

我们有一个小集群(2个分片),我们得到的要点如下:

1)MongoDB 将索引和尽可能多的数据存储在 RAM 中(如上所述)是的,这是真的,最好的方法是将所有数据存储在 RAM 中。(我们的项目每天大约有 100 万个独立用户和大约 3000 万个请求 => 将所有数据存储在 RAM 中对我们来说非常重要)。

2)如果你的内存大小超出了——是时候划分你的 mongo 服务器了(幸运的是,在 MongoDB 中配置起来非常容易)

我们使用的主存储大约有 40GB 数据和 10GB 索引。在两个分片上运行,每个分片有 32GB RAM。

相关内容