温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

mongodb中chunk指的是什么

发布时间:2020-08-01 10:11:20 来源:亿速云 阅读:395 作者:清晨 栏目:编程语言

小编给大家分享一下mongodb中chunk指的是什么,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!

什么是块(chunk)?

在一个shard server内部,MongoDB还是会把数据分为chunks,每个chunk代表这个shard server内部一部分数据。chunk的产生,会有以下两个用途:

Splitting:

当一个chunk的大小超过配置中的chunk size时,MongDB的后台进程会把这个chunk切分成更小的chunk,从而避免chunk过大的情况

Balancing:

在MongoDB中,balancer是一个后台进程,负责chunk的迁移,从而均衡各个shard server的负载。

chunk size默认值64M,生产库上选择适合业务的chunk size是最好的。

chunk的概念有些类似于数据库中的分区的概念。

当chunk的大小达到了chunk size的指定大小后,或chunk中的文档数量超过了Maximum number of documents per chunk to migrate mongodb会分裂这个chunk。

一个只包含一个分片键值的chunk是不能被分裂的。

默认的chunk的大小是64M,chunk的大小优缺点如下:

Small chunks lead to a more even distribution of data at the expense of more frequent migrations. This creates 
expense at the query routing (mongos) layer.
Large chunks lead to fewer migrations. This is more efficient both from the networking perspective and in terms 
of internal overhead at the query routing layer. But, these efficiencies come at the expense of a potentially uneven 
distribution of data.
Chunk size affects the Maximum Number of Documents Per Chunk to Migrate.
Chunk size affects the maximum collection size when sharding an existing collection. Post-sharding, chunk size does 
not constrain collection size.

如果修改了chunk的大小,那么现存的chunk在达到新的大小后,才分裂。chunk的分裂是元数据的操作,很快,没有进行数据的迁移也不影响分片。

chunk的迁移,迁移可以自动,也可以收工。

balancer是一个后台进程管理chunk的迁移。如果在分片中存在的最大的chunk与最小的chunk超过了migration 限制,那么balancer会开始迁移chunk保证集群中的数据分布均衡。

在sharding.archiveMovedChunks启用的时候,会在集合的命名空间下出现movechunk目录存放的额是迁移的chunk的备份。如果在迁移过程中出现问题,这些文件可以用来恢复文档。一旦迁移完成了,就不在需要这些文件了,可以删除这些文件。为了看迁移是否完成,使用sh.isBalancerRunning()命令来查看进度。

看完了这篇文章,相信你对mongodb中chunk指的是什么有了一定的了解,想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI