我试图在我的一个分片集合中找到所有块的大小。
我想知道真正的 大小,而不是作为我知道我可以找到的设置给 mongos 的提示:
use config
db.settings.find({_id : "chunksize"})
我尝试了几种解决方案,但计数操作非常慢,所以这并不容易。你知道解决方案吗?(shell、csharp、python、ruby、bash,我不在乎)
现在我已经测试了以下内容:
db.getSisterDB("config").chunks.find({ns : "mydb.mycollection"}).forEach(function(chunk) {
db.getSisterDB("mydb").mycollection.find({},{_id : 0, partnerId , 1, id : 1}).min(chunk.min).max(chunk.max).count()
})
但这太慢了,我的印象是它不使用我的分片键上的索引(它是 on {partnerId : 1, id : 1}
)。
我也用解释代替了计数,但没有任何运气。我还用javascript forEach替换了计数以手动计数(尝试使用不会命中磁盘的indexOnly查询)。
我试图找到真正的大小,因为我看到有几个块远远高于作为提示给出的块大小(2Gb 而不是 64Mb)。