mongodb中chunk指的是什么
小编给大家分享一下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的大小优缺点如下:
Smallchunksleadtoamoreevendistributionofdataattheexpenseofmorefrequentmigrations.Thiscreatesexpenseatthequeryrouting(mongos)layer.Largechunksleadtofewermigrations.Thisismoreefficientbothfromthenetworkingperspectiveandintermsofinternaloverheadatthequeryroutinglayer.But,theseefficienciescomeattheexpenseofapotentiallyunevendistributionofdata.ChunksizeaffectstheMaximumNumberofDocumentsPerChunktoMigrate.Chunksizeaffectsthemaximumcollectionsizewhenshardinganexistingcollection.Post-sharding,chunksizedoesnotconstraincollectionsize.
如果修改了chunk的大小,那么现存的chunk在达到新的大小后,才分裂。chunk的分裂是元数据的操作,很快,没有进行数据的迁移也不影响分片。
chunk的迁移,迁移可以自动,也可以收工。
balancer是一个后台进程管理chunk的迁移。如果在分片中存在的最大的chunk与最小的chunk超过了migration 限制,那么balancer会开始迁移chunk保证集群中的数据分布均衡。
在sharding.archiveMovedChunks启用的时候,会在集合的命名空间下出现movechunk目录存放的额是迁移的chunk的备份。如果在迁移过程中出现问题,这些文件可以用来恢复文档。一旦迁移完成了,就不在需要这些文件了,可以删除这些文件。为了看迁移是否完成,使用sh.isBalancerRunning()命令来查看进度。
看完了这篇文章,相信你对mongodb中chunk指的是什么有了一定的了解,想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。