我在工作中inheritance了一个大型的MongoDB服务器,并且负责弄清楚为什么查询的速度太慢。 数据库包含吨和大量的logging(大约10 ^ 9),占用大约300吉比特。 起初,我认为原始logging可能是罪魁祸首,所以我在适当的领域build立了索引。 这对search数据库中的标准的查询非常有帮助,但对于不存在匹配的查询,可能需要80-90分钟。 任何想法如何解决这个问题?
看起来你错过了一个重要的索引,特别是因为没有匹配的查询花费的时间比查询匹配的时间长得多。 它是什么types的查询? 也许你需要一个复合索引? 你在使用where作为查询的一部分?
我不是MongoDB的专家,但80-90分钟是绝对不正常的。 我不知道MongoDB对于Arenstar听起来像什么,但是它已经被certificate可以处理数十亿个文件(太字节的数据) 。
答案可能为时已晚,但我认为这是值得一提的。 有像mongostat这样的工具可以用来查看实际正在发生的事情。 索引过多太多,页面错误太多。 如果您正在运行同步读写操作,那么您还应该查找locking百分比。 对于MongoDB来说,300 GB的处理量并不是很大。 它可以很容易地远远超过这一点。
其他有用的命令:
db.stats(); db.currentOp();
查看MongoDB数据库分析器页面 ,特别是关于优化查询性能的部分。
MongoDb是webscale ..对不起,说..
基于也许范围扫描可能需要一段时间没有匹配?
我会分解它.. Mongo不听起来像一个数据库来处理300GB,可能还不够成熟,因为还不知道如何处理大量的数据。
你为什么使用Mongo?