我有一个mongo分片集群,有3个分片,这个数据库的所有操作都是find
或update
(upsert = true选项)。这意味着收集的数量会不断增加,但是当收集的数量(db.mycollection.find().count()
)增加到80000000或更大时,我发现它有时会增加,但有时它会减少,为什么?我保证对此db没有删除操作。
我使用db.myCollection.getShardDistribution()
来显示分布,shard2
仅为29%,低于平均值。
以下是计数趋势:
mongos> db.myCollection.find().count()
84374837
mongos> db.myCollection.find().count()
84375036
mongos> db.myCollection.find().count()
84409281
mongos> db.myCollection.find().count()
84408921
mongos> db.myCollection.find().count()
84407190
mongos> db.myCollection.find().count()
84407173
mongos> db.myCollection.find().count()
84407013
mongos> db.myCollection.find().count()
84406911
答案 0 :(得分:1)
我敢打赌,这是一个很明显的行动。这是它的工作原理:
当平衡器移动一块时,
1)将此块中的所有文档复制到新的分片
2)将块的所有权转移到新的碎片
3)从旧分片中删除文档。
同样,根据提供的信息,这只是猜测。但是,既然你发誓你的应用程序中没有删除,那一定是这个。