为什么MongoDb分片中Collection的文档数量正在减少

时间:2015-04-27 16:14:19

标签: mongodb sharding

我有一个mongo分片集群,有3个分片,这个数据库的所有操作都是findupdate(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

1 个答案:

答案 0 :(得分:1)

我敢打赌,这是一个很明显的行动。这是它的工作原理:

  • 所有文档都分为虚拟块
  • 可以在分片之间移动块
  • 当平衡器移动一块时,

    1)将此块中的所有文档复制到新的分片

    2)将块的所有权转移到新的碎片

    3)从旧分片中删除文档。

同样,根据提供的信息,这只是猜测。但是,既然你发誓你的应用程序中没有删除,那一定是这个。