我正在使用 mongodb 2.4.3,我遇到了一些严重的问题:
首先,性能:
我的 mongodb 的服务器日志中大约有 40000 项,如下所示:
10 月 18 日星期五 03:10:15.396 [conn20627] 更新 onlinetime.online_2013_10_18 查询:{ _id: 63545 } 更新:{ $inc: { olt: 12085 } } nscanned:1 nupdated:1 keyUpdates:1 locks(micros) w:89 628毫秒 10 月 18 日星期五 03:10:15.396 [conn20658] 更新 onlinetime.online_2013_10_18 查询:{ _id: 101599 } 更新:{ $inc: { olt: 15018 } } nscanned:1 nupdated:1 keyUpdates:1 locks(micros) w:83 625毫秒 10 月 18 日星期五 03:10:15.396 [conn20656] 更新 onlinetime.online_2013_10_18 查询:{ _id: 143782 } 更新:{ $inc: { olt: 14897 } } nscanned:1 nupdated:1 keyUpdates:1 locks(micros) w:75 600毫秒 10 月 18 日星期五 03:10:15.396 [conn20629] 更新 onlinetime.online_2013_10_18 查询:{ _id: 98588 } 更新:{ $inc: { olt: 13895 } } nscanned:1 nupdated:1 keyUpdates:1 locks(micros) w:82 610毫秒 10 月 18 日星期五 03:10:15.396 [conn20670] 更新 onlinetime.online_2013_10_18 查询:{ _id: 145266 } 更新:{ $inc: { olt: 17629 } } nscanned:1 nupdated:1 keyUpdates:1 locks(micros) w:79 593毫秒 10 月 18 日星期五 03:10:15.396 [conn20642] 更新 onlinetime.online_2013_10_18 查询:{ _id: 71860 } 更新:{ $inc: { olt: 15026 } } nscanned:1 nupdated:1 keyUpdates:1 locks(micros) w:79 604毫秒
这些日志是什么意思?一个简单的更新_id
真的{ $inc: { olt: 12085 }
需要 628 毫秒才能完成吗?
收集的记录只有20000条左右online_2013_10_18
。
mongodb 是否存在一些严重的性能问题?还是我只是滥用它?更奇怪的是一个日志项目显示:
更新taxilogs.log_PUSH_2013_10_18查询:{idxs:1827626800}更新:{$addToSet:{acks:{rid:36045,日期:新日期(1382076054148)}},$inc:{acks_c:1}}nscanned:1 nmoved:1 nupdated:1 keyUpdates:0 locks(micros) w:3575082 3575ms
更新需要 3575 毫秒才能完成?
其次:数据丢失:
从我的应用程序日志中,我确信更新已发布到 mongodb。但这是我在日志中看到的:
更新:{“idxs”:1827771018},{“$addToSet”:{“acks”:{“rid”:130284,“日期”:{“$date”:“2013-10-18T05:27:08.358Z” }}} ,"$inc" : { "acks_c" : 1}}。 但是当我使用 find({ "idxs" : 1827771018},{acks_c:1,recs_c:1}) 查询数据时,mongodb 返回 { "_id" : ObjectId("5260b3450cf2f82eef378e8d"), "recs_c" : 99 }
acks_c
没更新,怎么回事?在 mongodb 的服务器日志中没有发现异常。
mongodb有可能默默地丢失了一些更新吗?