MongoDB很快,但只有当你的工作集或索引适合RAM时.因此,如果我的服务器有16G的RAM,这是否意味着我所有收藏的大小需要小于或等于16G?如何说"好吧这是我的工作集,其余的可以"存档?"
Ada*_*Dev 71
"工作集"基本上是系统将处于活动状态/正在使用的数据和索引的数量.
例如,假设您有1年的数据.为简单起见,每个月与1GB的数据相关,总共提供12GB,并且为了覆盖每个月的数据,您每年有1GB的索引,总计12GB.
如果您总是访问过去12个月的数据,那么您的工作集是:12GB(数据)+ 12GB(索引)= 24GB.
但是,如果您实际上只访问过去3个月的数据,那么您的工作集是:3GB(数据)+ 3GB(索引)= 6GB.在这种情况下,如果您有8GB RAM,然后您开始定期访问过去6个月的数据,那么您的工作集将开始超过可用RAM,并对性能产生影响.
但一般来说,如果你有足够的内存来覆盖你希望经常访问的数据/索引数量,那么你会没事的.
编辑:回复评论中的问题
我不确定我是否会遵循,但我会回答.首先,工作集的计算是"球场图".其次,如果你在user_id上有一个(例如)1GB的索引,那么只有那个常用的索引部分需要在RAM中(例如,假设有50%的用户处于非活动状态,那么0.5GB的索引会更频繁RAM中需要/需要的).一般来说,你拥有的内存越多,特别是因为使用量增加,工作集可能会随着时间的推移而增长.这就是分片的用武之地 - 在多个节点上分割数据,您可以经济有效地向外扩展.然后,您的工作集将分为多台计算机,这意味着可以将更多内容保存在RAM中.需要更多内存?将另一台机器添加到shard上.
工作集基本上是你最常使用的东西(经常).如果您使用集合B的索引A来搜索文档的子集,那么您可以考虑使用您的工作集.只要这些结构中最常用的部分可以适合记忆,那么事情就会非常快.由于部件不再适合您的工作装置,因此许多文件可能会变慢.一般情况下,如果你的索引超过你的记忆,事情会变慢.
是的,您可以拥有大量数据,其中大部分数据都是"存档的",很少使用而不影响我们的应用程序性能或影响您的工作集(不包括该存档数据).
| 归档时间: |
|
| 查看次数: |
16065 次 |
| 最近记录: |