是否可以使用16GB RAM在mongodb上运行200GB数据查询?

是否可以使用16GB RAM在mongodb上运行200GB数据查询?,mongodb,database-performance,Mongodb,Database Performance,我正在尝试运行一个简单的查询,以使用以下命令查找具有特定值的所有记录的数量: db.ColName.find({id\u c:1201}).count() 我有200GB的数据。当我运行这个查询时,mongodb占用了所有RAM,我的系统开始滞后。在一个小时徒劳的等待之后,我放弃了,没有得到任何结果 这里有什么问题?我如何解决 我相信在NoSQL世界中,正确的方法不是试图执行这样的完整查询,而是不断累积统计数据 例如,您应该拥有一个包含任意对象的集合stats,该集合应该拥有一个种类或id属性,

我正在尝试运行一个简单的查询,以使用以下命令查找具有特定值的所有记录的数量:

db.ColName.find({id\u c:1201}).count()

我有200GB的数据。当我运行这个查询时,mongodb占用了所有RAM,我的系统开始滞后。在一个小时徒劳的等待之后,我放弃了,没有得到任何结果


这里有什么问题?我如何解决

我相信在NoSQL世界中,正确的方法不是试图执行这样的完整查询,而是不断累积统计数据

例如,您应该拥有一个包含任意对象的集合stats,该集合应该拥有一个种类或id属性,该属性可以采用类似于
“totalUserCount”
的值。无论何时添加用户,都会更新此计数

这样,您将获得即时的结果。它只是在一个小的统计数据集合中获取一个属性值


顺便说一句,这种缓慢应该是由集合中的非索引属性查询对象引起的

使用给定的硬件规格,MySQL、MSSQL或Oracle可以轻松管理这些数据量。你不需要NoSQL数据库,NoSQL数据库是为更大的存储需求而设计的,这实际上需要大量的硬件(RAM、硬盘)才能提高效率


您需要定义一个索引来读取该id并使用普通SQL数据库

非常感谢。我会调查的。@stkusr1234没问题。在另一种方法之前尝试索引方法,因为您知道Mongo不实现多文档原子事务,如果出现问题,可能
的“totalUserCount”
属性无法反映对象的实际计数…:(是的,问题是数据已经导入,因此在获得新数据后,我将能够遵循第一种方法。但我将尝试索引数据,希望一切顺利。我是mongodb新手,因此不知道如何工作^ ^”