我正在尝试运行一个简单的查询,使用以下命令查找具有特定值的所有记录的数量:
db.ColName.find({id_c:1201})。COUNT()
我有200GB的数据。当我运行此查询时,mongodb占用了所有RAM,我的系统开始滞后。经过一个小时徒劳的等待,我放弃了,没有得到任何结果。
这里有什么问题,我该如何解决?
答案 0 :(得分:2)
我认为 NoSQL 世界中的正确方法并不是试图执行这样的完整查询,而是在超时累积统计数据。
例如,您应该拥有一个包含任意对象的 stats 集合,这些对象应该拥有种或 id 属性,该属性可以取值"totalUserCount"
。每当您添加用户时,您也会更新此计数。
这样您就可以获得即时结果。它只是在一小部分统计数据中得到一个属性值。
顺便说一句,这种缓慢应该是通过集合中非索引属性查询对象来实现的。 Try to indexid_c
and probably you'll get quicker results.
答案 1 :(得分:0)
使用给定的硬件规范,MySQL,MSSQL或Oracle可以轻松管理大量数据。你不需要NoSQL数据库,NoSQL数据库是为了更大的存储需求而制造的,这实际上需要大量硬件(RAM,硬盘)才能有效。
您需要定义一个索引来读取该ID并使用普通的SQL数据库。