Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MongoDB 监控碎片整理的状态和进度

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

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

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
AI代码解释
复制
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
AI代码解释
复制
db.adminCommand(
   {
      configureCollectionBalancing: "user_center.newusers",
      defragmentCollection: false
   }
)

手动启动

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

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MongoDB5.0开始引入的resharding功能
在MongoDB5.0之前,如果要重新分片的话,操作比较复杂。一般是部署一个新的集群,然后按照新的分片算法将数据全量+增量同步到新的集群里。
保持热爱奔赴山海
2024/10/03
1900
MongoDB 常用运维实践总结
MongoDB是一个基于分布式文件存储的数据库,其目的在于为WEB应用提供可扩展的高性能数据存储解决方案。下面将以3台机器介绍最常见的集群方案。具体介绍,可以查看官网 https://docs.mongodb.com/v3.4/introduction/。
我是阳明
2021/03/18
2.3K1
MongoDB 常用运维实践总结
MongoDB5.0版本新特性速览
MongoDB到现在已经走过了12个年头了。就在今天刚刚发布了5.0版本。来看一下新版本发布了哪些新功能和特性~官方选择从4.4直接跳到5.0可能也是为了表达出该版本变化比较大(调整了发布节奏)的含义。
phoenix、
2021/07/14
3.8K0
MongoDB5.0版本新特性速览
Mongodb日常操作命令
db.js_wx_setting_menu.storageSize();
DBA实战
2024/11/18
1160
Mongodb日常操作命令
MongoDB之primary shard介绍
分片集群中的每一个数据库都有一个主分片,这个主分片上保存了当前数据库中没有被分片的集合的数据,主分片(primary shard)和主节点(primary)之间没有任何关联。
AsiaYe
2021/01/24
1.4K0
MongoDB 统计 group 操作用不了,试试 mapReduce 吧
今天,同事小张 Q 我, 说自己辛苦花了一天的时间,基于 mongodb 数据库开发的待办统计功能一直报错!
猿芯
2020/07/06
1.1K0
一文读懂MongoDB事务处理
在MongoDB中,对单个文档的操作是原子的。由于可以在单个文档结构中使用内嵌文档和数组来获得数据之间的关系,而不必跨多个文档和集合进行范式化,所以这种单文档原子性避免了许多实际场景中对多文档事务的需求。
MongoDB中文社区
2021/12/04
2.7K0
深入解析 MongoDB 中的 renameCollection 操作:不同版本中的风险与影响
在 MongoDB 中,renameCollection 操作用于将一个集合重命名为另一个名称。虽然这看起来是一个简单的操作,但在不同版本的 MongoDB 中,renameCollection 有一些重大的变化和注意事项。本文将深入探讨在不同版本的 MongoDB 中执行 renameCollection 操作时需要考虑的方面。
DBA实战
2024/09/06
1640
深入解析 MongoDB 中的 renameCollection 操作:不同版本中的风险与影响
MongoDB使用小结:一些常用操作分享
本文整理了一年多以来我常用的MongoDB操作,涉及mongo-shell、pymongo,既有运维层面也有应用层面,内容有浅有深,这也就是我从零到熟练的历程。
拓荒者
2019/09/06
2K0
MongoDB 分片集群技术
---- 在了解分片集群之前,务必要先了解复制集技术! ----  1.1 MongoDB复制集简介   一组Mongodb复制集,就是一组mongod进程,这些进程维护同一个数据集合。复制集提供了数据冗余和高等级的可靠性,这是生产部署的基础。 1.1.1 复制集的目的   保证数据在生产部署时的冗余和可靠性,通过在不同的机器上保存副本来保证数据的不会因为单点损坏而丢失。能够随时应对数据丢失、机器损坏带来的风险。   换一句话来说,还能提高读取能力,用户的读取服务器和写入服务器在不同的地方,而且,由不同的
惨绿少年
2018/03/30
2.5K0
MongoDB Oplog深入理解
Oplog 是用于存储 MongoDB 数据库所有数据的操作记录的(实际只记录增删改和一些系统命令操作,查是不会记录的),有点类似于 mysql 的 binlog 日志。
星哥玩云
2022/08/18
1.2K0
MongoDB 分片管理
一分片一区间:数据不会在片之间自动移动来保持分片的数据的均匀性,需要手动拆分分片来移动数据。
拓荒者
2019/09/12
1.1K0
MongoDB 分片管理
shardCollection源码解析
在阅读源码之前,MongoDB shardCollection就像一个黑盒子,让人很难窥其内貌,在运营过程中遇到的很多问题都难以抓住关键点。本文以“shardCollection超时问题”为入口,探讨下面4个核心问题:
MongoDB中文社区
2020/11/02
1K0
shardCollection源码解析
MongoDB Change Stream之一——上手及初体验
Change Stream可以直译为"变更流",也就是说会将数据库中的所有变更以流式的方式呈现出来。用户可以很方便地对数据库建立一个监听(订阅)进程,一旦数据库发生变更,使用change stream的客户端都可以收到相应的通知。使用场景可以包括但不限于以下几种:
phoenix、
2020/10/10
10.4K0
MongoDB Change Stream之一——上手及初体验
MongoDB性能分析之WiredTiger引擎
MongoDB的WiredTiger引擎可以设置其可使用的最大内存,由cacheSizeGB参数控制,单位为G,表示WiredTiger引擎能够缓存的最大热数据量。每一个连接数都会消耗内存使用,可通过命令行db.serverStatus().connections查看当前连接数,如果连接数较大可通过连接池的方式控制mongodb的连接数。
Power
2025/03/02
1250
常见问题: MongoDB 存储
存储引擎是数据库的一部分,负责管理如何在内存和磁盘上存储数据。许多数据库支持多个存储引擎,其中不同的引擎对特定工作负载的性能会更好。例如,一个存储引擎可能为读取繁重的工作负载提供更好的性能,另一个可能支持更高的写入操作吞吐量。
MongoDB中文社区
2019/06/11
2.6K0
常见问题: MongoDB 存储
查看 MongoDB 集群配置
如果一个数据库中partitioned字段的值为true,则该数据库已开启分片功能。
MongoDB中文社区
2021/09/26
1.6K0
专家专栏|使用Zabbix Agent 2监控MongoDB
Zabbix运维工程师,熟悉Zabbix开源监控系统的架构。乐于分享Zabbix运维经验,个人公众号“运维开发故事”。
Zabbix
2021/06/22
1.1K0
专家专栏|使用Zabbix Agent 2监控MongoDB
全网最全95道MongoDB面试题1万字详细解析
MongoDB 是由 C++语言编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB 旨在给 WEB 应用提供可扩展的高性能数据存储解决方案。
程序员追风
2020/06/11
13.6K0
mongodb4.0多文档事务尝鲜
mongodb4.0也出来一段时间了,这个版本最为大众期待的特性就是支持了多文档事务(multi-document transaction),本文记录一下尝鲜该特性的过程。
jeremyxu
2019/03/13
1.3K0
相关推荐
MongoDB5.0开始引入的resharding功能
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档