• 售前

  • 售后

热门帖子
入门百科

MongoDB的chunk详解

[复制链接]
简单350 显示全部楼层 发表于 2021-8-14 15:07:49 |阅读模式 打印 上一主题 下一主题
目次


  • chunk的大小如何确定???
  • chunk的分裂
  • chunk的迁移
  • 通常环境下,chunk迁移由下面三种场景触发:
    MongoDB中,在利用到分片的时候,常常会用到chunk的概念,chunk是指一个集合数据中的子集,也可以简单理解成一个数据块,每个chunk都是基于片键的范围取值,区间是左闭右开。比方,我们的片键是姓名的第二个字母,包罗了A-Z这26中大概,理想环境下,分别为26个chunk,此中每个字母开头的姓名记载即为一个chunk。
    在数据写入的时候,mongos根据片键shard key的值来写入对应的chunk中,chunk可以表现的最小范围是单个唯一的shard key的值,只包罗具体的单个片键值文档的chunk不能被分割,这个也比力容易理解,假如某个chunk只包罗一个片键的值,假如对它举行分割,则代表一个片键值映射了2个chunk,下次碰到这个片键的文档时,mongos就不知道应该存放在哪个chunk当中了。

chunk的大小如何确定???

    在MongoDB中,chunk的默认大小是64MB,可以增长或者淘汰chunk的大小。
    chunk的大小不宜过小,假如chunk过小,利益是可以让数据更加匀称的分布,但是会导致chunk之间频繁的迁移,有肯定的性能开销;同样的,chunk的大小不宜过大,过大的chunk size会导致数据分布不匀称,

chunk的分裂

    当某个chunk的值到达了chunk所能表现的最大值的时候,这个时候chunk不能无限增长,须要通太过割的方法来淘汰chunk的大小,比方一个64MB的chunk分割成2个32MB的chunk,如许固然增长了chunk的数目,但是带来的收益是单个chunk的缩小。


chunk的迁移

    在分片+复制集的架构中,当某个服务器上的数据记载不停的增多,它上面分割的chunk就会变多,当集群中每个服务器上的chunk数目严重失衡的时候,mongodb会自动举行chunk的迁移工作,这个自动迁移的工作,是通过balancer来举行的。假如balancer发现各个shard之间的chunk数差异超过了提前规定的阈值,则会举行chunk的迁移工作,如下:

也就是从上面的状态变成下面的状态。每个小块代表一个chunk。
MongoDB自动触发迁移的阈值表如下:
chunk数目:   <20,迁移阈值:2
chunk数目:20~79,迁移阈值:4
chunk数目:   >80,迁移阈值:8
chunk的迁移一样平常利用锁来实现,从MongoDB3.4版本起,chunk的迁移分为7个步骤:
1、balancer历程将moveChunk的命令发送到源shard中
2、源shard利用内部moveChunk命令开始移动,迁移过程中,该chunk的操作依旧在源shard上举行,源shard依旧负责该chunk的写入操作
3、目标shard开始创建所需索引
4、目标shard开始请求chunk中的文档并开始吸收数据的复制
5、吸收完源shard的最后一个文档之后,目标shard启动一个同步历程,这个历程会拉取迁移期间的日志,将迁移期间对该chunk的操作更新到目标chunk中。
6、当完全同步时,源shard毗连到config数据库并更新chunk的位置元数据。
7、完成数据更新后,一旦在源shard上没有对该chunk的操作,源shard会异步删除chunk。固然,用户可以设置_waitforDelete参数为true,让源shard在chunk迁移完成后同步删除chunk数据

通常环境下,chunk迁移由下面三种场景触发:

1、多个shard上分布不匀称
2、用户调用removeShard之后,被移除的shard上的chunk就要被迁移到其他的shard上
3、MongoDB的shard tag功能,可以对shard或者shard  key range打标签,体系会自动将对应的range的数据迁移到拥有雷同tag的shard上。
以上就是MongoDB的chunk详解的具体内容,更多关于MongoDB chunk的资料请关注脚本之家别的相关文章!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作