【问题标题】:Why count of Collection's docs in MongoDb sharding is decreasing为什么 MongoDb 分片中 Collection 的文档数量正在减少
【发布时间】:2015-04-27 16:14:18
【问题描述】:

我有一个 mongo 分片集群,有 3 个分片,对这个数据库的所有操作都是 findupdate(带有 upsert=true 选项)。这意味着收集的数量会不断增加,但是当收集的数量(db.mycollection.find().count())增加到 80000000 或更大时,我发现有时它会增加,但有时会减少,为什么?我保证不会对此数据库执行任何删除操作。

我用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

【问题讨论】:

  • Totals data : 53.89GiB docs : 84399594 chunks : 1732 Shard shard1 contains 35.44% data, 35.78% docs in cluster, avg obj size on shard : 679B Shard shard2 contains 29.7% data, 29.51% docs in cluster, avg obj size on shard : 690B Shard shard3 contains 34.84% data, 34.69% docs in cluster, avg obj size on shard : 688B
  • 我用db.myCollection.getShardDistribution()显示分布,shard1:35%, shard2:29%, shard3:36%,有问题吗?

标签: mongodb sharding


【解决方案1】:

我敢打赌这是分片在行动。它是这样工作的:

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

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

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

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

同样,这只是基于所提供信息的猜测。但是既然你发誓你的应用中没有删除,那么它一定是这个。

【讨论】:

  • 我正在查询 mongos 中的计数,而不是单个分片。如果是分片之间的移动动作,总计数不会减少。
  • 再次,“移动”是三个步骤。
  • 集群运行了2天,但是收集的总数没有增加,仍然是84407173
猜你喜欢
  • 1970-01-01
  • 2021-12-18
  • 1970-01-01
  • 1970-01-01
  • 2012-04-27
  • 1970-01-01
  • 2011-12-05
  • 2019-12-20
  • 2017-03-18
相关资源
最近更新 更多