将“工作集”放入MongoDB的RAM中意味着什么?

问题描述

| 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中保留更多数据。需要更多RAM?添加另一台计算机以分片到。     ,        工作集基本上是您最经常使用的东西。如果您对集合B使用索引A来搜索文档的子集,那么您可以考虑使用您的工作集。只要这些结构中最常用的部分可以容纳在内存中,事情就会变得非常快。由于零件像许多文档一样不再适合您的工作环境,因此可能会减慢速度。通常,如果您的索引超出了内存,事情将会变得很慢。 是的,您可以拥有很多数据,其中大部分是“存档的”,并且很少使用,而不会影响我们的应用程序的性能或影响您的工作集(不包括已存档的数据)。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...