MongoDBChunks核心概念与机制
- IT业界
- 2025-09-10 22:39:02

1. 基础定义 Chunk(块):MongoDB分片集群中数据的逻辑存储单元,由一组连续的片键(Shard Key)范围数据组成,默认大小为64MB(可调整范围为1-1024MB)。数据分布逻辑:分片集群通过记录Chunk与分片(Shard)的映射关系管理数据存储,而非直接跟踪每条数据的位置。 2. Chunk生命周期
初始状态 新分片的集合默认生成一个覆盖全片键范围([minKey, maxKey])的Chunk,存储在primary shard上。
自动分裂(Splitting)
触发条件:当Chunk大小超过chunkSize(默认64MB)时,MongoDB自动将其拆分为更小的Chunk。分裂规则: 首次分裂时,若Chunk数≤3,分裂阈值为1MB;随着Chunk数量增加,阈值逐步升高至chunkSize3。分裂后更新元数据至config server,并在mongos缓存中同步路由信息。 手动分裂通过splitAt()或splitFind()函数指定片键值强制拆分,适用于预分片(Pre-splitting)优化场景。
Chunk迁移与均衡
Balancer触发迁移:当分片间Chunk数量差异≥9时,Balancer自动迁移Chunk以实现负载均衡
迁移流程
从源分片复制Chunk数据到目标分片。更新config server元数据及mongos路由缓存。删除源分片上的旧Chunk数据 关键配置与管理 配置项作用示例命令/参数来源shardCollection为集合启用分片sh.shardCollection("db.coll", {key:1})chunkSize定义Chunk初始大小sh.setBalancerMaxChunkSize(128)sh.disableBalancer()临时关闭Balancer以维护sh.disableBalancer("db.coll")sh.status()查看Chunk分布及迁移状态sh.status()MongoDBChunks核心概念与机制由讯客互联IT业界栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“MongoDBChunks核心概念与机制”