5M和150M网页的Mongo dbs真的很慢

时间:2017-07-18 04:31:54

标签: mongodb

我将一组网页存储在mongodb中,大约150M网页。每页不同大小。唯一的事务我想用它来检索页面使用他们的id(而不是mongodb默认_id)。但是,获取结果需要很长时间,而我还没有设法检索任何文档。但是,使用db.collection.findOne()可以完美运行。因此,我将5M网页的子集编入索引以进行测试和修复。对此db db.collection.find("id":"aw-000")发出查询时,获取文档需要4分钟或更长时间。

我尝试了db.runCommand({compact: 'collection'})db.runCommand({compact: 'collection'}) m但他们没有帮助!

当我检查var/log/mongodb/mongod.log下的日志(应该包含任何查询时间超过100毫秒)时,我发现了这个:

655163:2017-07-16T14:05:37.231+0300 I COMMAND  [ftdc] serverStatus was very slow: { after basic: 0, after asserts: 0, after connections: 0, after extra_info: 310, after globalLock: 310, after locks: 310, after network: 310, after opcounters: 310, after opcountersRepl: 310, after storageEngine: 310, after tcmalloc: 310, after wiredTiger: 310, at end: 1220 }

但是,我不知道如何从这些日志中受益。

有没有办法让我的数据库更有效率?

1 个答案:

答案 0 :(得分:0)

正如Neil Lunn在上述评论中指出的那样。我发现最简单的解决方案是从头开始创建数据库,同时使用$("#dt1").datepicker({ dateFormat: "dd-M-yy", minDate: 0, onSelect: function (date) { var date2 = $('#dt1').datepicker('getDate'); date2.setDate(date2.getDate() + 1); $('#dt2').datepicker('setDate', date2); //sets minDate to dt1 date + 1 $('#dt2').datepicker('option', 'minDate', date2); } }); $('#dt2').datepicker({ dateFormat: "dd-M-yy", onClose: function () { var dt1 = $('#dt1').datepicker('getDate'); console.log(dt1); var dt2 = $('#dt2').datepicker('getDate'); if (dt2 <= dt1) { var minDate = $('#dt2').datepicker('option', 'minDate'); $('#dt2').datepicker('setDate', minDate); } } }); 作为我的id字段名而不是_id"id"默认情况下有一个索引,并且针对此索引发出的唯一查询类型是通过id检索。

因此,程序(用于创建索引的任何程序)将按如下方式插入对象:

_id

而不是:

db.collection.insert( { _id: "aw-000", page: "...", .... } )