mongodb - 将 "working set"放入 MongoDB 的 RAM 是什么意思?

标签 mongodb

MongoDB 速度很快,但前提是您的工作集或索引可以放入 RAM。那么如果我的服务器有 16G 的 RAM,这是否意味着我所有集合的大小都需要小于或等于 16G?怎么说“好的,这是我的工作集,其余的可以“存档?”

最佳答案

“工作集”基本上是您的系统将处于事件状态/正在使用的数据量和索引。

例如,假设您有 1 年的数据。为简单起见,每个月涉及 1GB 的数据,总共 12GB,为了涵盖每个月的数据,您有 1GB 的索引,全年总计 12GB。

如果您总是访问过去 12 个月的数据,那么您的工作集是:12GB(数据)+ 12GB(索引)= 24GB。

但是,如果您实际上只访问最近 3 个月的数据,那么您的工作集为:3GB(数据)+ 3GB(索引)= 6GB。在这种情况下,如果您有 8GB RAM,然后您开始定期访问过去 6 个月的数据,那么您的工作集将开始超出可用 RAM 并产生性能影响。

但一般来说,如果您有足够的 RAM 来覆盖您希望经常访问的数据/索引量,那么您就可以了。

编辑:在评论中回复问题
我不确定我是否完全遵循,但我会尝试回答。首先,工作集的计算是一个“球场图”。其次,如果您在 user_id 上有一个(例如)1GB 索引,那么只有该索引中经常访问的部分需要在 RAM 中(例如,假设 50% 的用户处于非事件状态,那么 0.5GB 的索引将更频繁RAM 中需要/需要)。通常,您拥有的 RAM 越多越好,尤其是由于使用量的增加,工作集可能会随着时间的推移而增长。这就是分片的用武之地——将数据拆分到多个节点上,您可以经济高效地进行横向扩展。然后你的工作集被划分到多台机器上,这意味着更多的机器可以保存在 RAM 中。需要更多内存?添加另一台机器进行分片。

关于mongodb - 将 "working set"放入 MongoDB 的 RAM 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6453584/

相关文章:

java - Spring分页和MongoDB切片中包含未知实例的页面/切片

Mongodb 聚合数组中的子文档

mongodb - 无法从压缩的 bson 恢复集合

mongodb - 在 Mongodb/pymongo 中按字符串长度排序

mongodb - 使用 $inc 来增加 Mongoose 的文档属性

javascript - Mongo 会处理我的服务吗?

linux - Chef-client 是否在启动时运行?

javascript - API删除不更新数据库

javascript - 当数据库中有\n 时,在浏览器中显示新行 <br>

mongodb - 整个数组上的多键索引