为什么我的MongoDB查询真的非常慢?


9

我已经在工作中继承了一个大型MongoDB服务器,并且负责弄清为什么针对它运行查询的速度如此之慢。该数据库包含无数记录(大约10 ^ 9),占用约300 GiB。起初,我认为原始记录数量可能是罪魁祸首,所以我在适当的字段上设置了索引。它对正在数据库中搜索标准的查询有很大帮助,但是对于没有匹配项的查询,则需要80-90分钟的时间。关于如何解决这个问题的任何想法?


1
哪个版本的MongoDB?什么硬件?多少个碎片?
罗伯·奥尔莫斯

2
哦,遗传问题的痛苦...
gWaldo 2012年

Answers:


5

看来您缺少重要的索引,尤其是因为没有匹配项的查询比带有匹配项的查询花费的时间长得多。这是什么类型的查询?也许您需要复合索引?您where在查询中使用吗?

我不是MongoDB专家,但是80-90分钟绝对是异常。我不知道MongoDB对Arenstar的影响如何,但是事实证明它可以处理数十亿个文档(兆兆字节数据)


4

这可能为时已晚,但我认为值得一提。有诸如mongostat之类的工具可用于查看实际情况。索引遗漏过多,页面错误过多。如果同时运行读写操作,则还应查找锁定百分比。对于mongodb而言,300 GB并不是一个很大的数目。它可以轻松超越此范围。

其他有用的命令:

    db.stats();
    db.currentOp();


-5

MongoDb是webscale ..抱歉不得不这么说。

根据距离扫描,可能没有一段时间需要匹配???

我会把它分解一下。Mongo听起来不像一个可以处理300gb的数据库,而且可能还不够成熟,还不知道它如何处理大量数据。

您出于什么原因使用Mongo?


这正是我之前的那个人(离开的那个人)很舒服地使用它并不幸地实现了它。从好的方面来说,我们欢迎新的数据库建议。
Mark LeMoine

您存储什么数据???一切与您的数据结构有关
Arenstar 2010年

它是小的日志文件记录,每个记录都包含一个ID(int),服务器名称(字符串),消息有效负载(字符串),日期和IP地址。我目前有ID和服务器名称的索引。
Mark LeMoine 2010年

8
有大量使用mongodb的公司。300g是可行的,请问foursquare,wordnik和boxedice上有大量数据的人们。如果有,则索引不正确。在淘汰数据库并将其替换为其他内容之前,我会进行检查。
luckytaxi

1
@Arenstar:webscale是什么意思?它与其他规模有什么不同?
Joshua Partogi '11
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.