{ "ts" : "Mon Mar 28 2011 23:12:25 GMT+0800 (CST)", "info" : "remove query: { taskid: \"aae7942d-0a61-4d08-8507-f92c7eebee7f\" } 403ms", "millis" : 403 }
{ "ts" : "Mon Mar 28 2011 23:11:15 GMT+0800 (CST)", "info" : "remove query: { taskid: \"0b973bcb-52fa-4709-a9bc-47841e51a5ab\" } 171ms", "millis" : 171 }
{ "ts" : "Mon Mar 28 2011 23:11:10 GMT+0800 (CST)", "info" : "remove query: { taskid: \"0c352958-bcd8-4e28-b9cd-7e7534580eac\" } 223ms", "millis" : 223 }
{ "ts" : "Mon Mar 28 2011 23:11:07 GMT+0800 (CST)", "info" : "remove query: { taskid: \"0c35c0e5-3460-4192-9094-e4d0fa623470\" } 224ms", "millis" : 224 }
{ "ts" : "Mon Mar 28 2011 23:11:06 GMT+0800 (CST)", "info" : "remove query: { roleid: \"2d1dedfe-e587-4444-9b3a-3691a4c47fde\" } 18ms", "millis" : 18 }
{ "ts" : "Mon Mar 28 2011 23:11:01 GMT+0800 (CST)", "info" : "remove query: { taskid: \"ee3bbc78-def4-4b96-8db7-1dd12443707a\" } 325ms", "millis" : 325 }
{ "ts" : "Mon Mar 28 2011 23:10:44 GMT+0800 (CST)", "info" : "remove query: { taskid: \"7d0d7433-4954-4355-adfa-5af2fd2c3b06\" } 357ms", "millis" : 357 }
我在使用数据库分析时经常看到它,而taskid是集合的索引
我设定: db.setProfilingLevel(1,50) 然后我调查了一下 db.system.profile.find()排序。(TS:-1).limit(20)
我看到很多可怕的长时间执行 {“ts”:“2011年3月28日星期一20:42:39 GMT + 0800(CST)”,“信息”:“删除 查询:{taskid:\“495951f5-8042-4a7a-9f09-f65c9e622e28 \”} 361ms“, “millis”:361}
但目前我的申请没有遇到异常缓慢或延迟。
所以我只是想知道为什么这么久以及那是什么
这是我的表状态
> db.role_task.stats()
{
"ns" : "dt_base.role_task",
"count" : 17907,
"size" : 66267932,
"avgObjSize" : 3700.6719160104985,
"storageSize" : 86088960,
"numExtents" : 11,
"nindexes" : 3,
"lastExtentSize" : 20872448,
"paddingFactor" : 1.4199999999985065,
"flags" : 1,
"totalIndexSize" : 5496832,
"indexSizes" : {
"_id_" : 761856,
"taskid_1" : 1753088,
"roleid_1_taskdbid_1" : 2981888
},
"ok" : 1
}
答案 0 :(得分:1)
删除通常很慢(依赖于磁盘速度),除非您的数据库严重依赖它们,否则不应该担心。 MongoDB的默认操作是在后台运行此删除操作,并允许您的其他操作同时执行。这就是为什么你没有看到明显的减速。
来自文档:
v1.3 +支持删除运行时的并发操作。如果同时更新(在同一集合上)增加了与删除标准匹配的对象,则可能不会删除更新的对象(因为操作几乎在同一时间发生,这甚至可能不令人惊讶)。在不希望出现这种情况的情况下,请在过滤器表达式中传递{$ atomic:true}: