前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MongoDB 监控碎片整理的状态和进度

MongoDB 监控碎片整理的状态和进度

原创
作者头像
保持热爱奔赴山海
发布2024-10-04 15:27:42
960
发布2024-10-04 15:27:42
举报
文章被收录于专栏:数据库相关

https://www.mongodb.com/zh-cn/docs/manual/core/defragment-sharded-collections/monitor-defragmentation-sharded-collection/#std-label-monitor-defragmentation-sharded-collection

https://www.mongodb.com/zh-cn/docs/manual/core/defragment-sharded-collections/#std-label-defragment-sharded-collections

碎片是指分片集合的数据被分解为不必要的大量小数据段。这会增加在该集合上运行的 CRUD 操作的操作时间。碎片整理通过将较小的数据段合并为较大的数据段来减少数据段的数量,从而缩短 CRUD 操作时间。

如果 CRUD 操作时间可以接受,则无需对集合进行碎片整理。

下表汇总了各种 MongoDB 版本的碎片整理信息。

在移动、分割或合并数据段时,分片元数据会在配置服务器提交数据段操作后更新。未参与数据段操作的分片也会使用新的元数据更新。

分片元数据更新时间与路由表大小成正比。在更新分片元数据时,将暂时阻止对集合的 CRUD 操作,较小的路由表意味着更短的 CRUD 操作延迟。

对集合进行碎片整理可以减少数据段数量以及更新数据段元数据的时间。

碎片整理使用以下阶段来减少集合中数据段的数量并提高性能:

  • 合并同一分片上可合并的数据段。
  • 将较小的数据段迁移到其他分片。 小数据段是指包含的数据少于chunkSize设置的25 %。
  • 合并可合并的同一分片上的剩余数据段。

查看状态

代码语言:txt
复制
db.adminCommand(
   {
      balancerCollectionStatus: "test.ordersShardedCollection"
   }
)

如果是未完成的状态,则类似如下:
{
   "balancerCompliant": false,
   "firstComplianceViolation": "defragmentingChunks",
   "details": {
      "currentPhase": "moveAndMergeChunks",
      "progress": { "remainingChunksToProcess": 1 }
   }
}


如果是完成的状态,则类似如下:
{
  chunkSize: 128,
  balancerCompliant: true,
  ok: 1,
  '$clusterTime': {
    clusterTime: Timestamp({ t: 1728010226, i: 2 }),
    signature: {
      hash: Binary.createFromBase64('AAAAAAAAAAAAAAAAAAAAAAAAAAA=', 0),
      keyId: Long('0')
    }
  },
  operationTime: Timestamp({ t: 1728010226, i: 2 })
}

启动和停止碎片整理

https://www.mongodb.com/zh-cn/docs/manual/core/defragment-sharded-collections/stop-defragmenting-sharded-collection/#std-label-stop-defragmenting-sharded-collection

通常,您应使用分片均衡窗口来指定balancer的运行时间,而不是手动启动和停止碎片整理。

手动停止

代码语言:txt
复制
db.adminCommand(
   {
      configureCollectionBalancing: "user_center.newusers",
      defragmentCollection: false
   }
)

手动启动

代码语言:txt
复制
db.adminCommand(
   {
      configureCollectionBalancing: "user_center.newusers",
      defragmentCollection: true
   }
)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 查看状态
  • 启动和停止碎片整理
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档