OPTIONS
翻译或纠错本页面

集群中chunk的分裂

当数据块的大小增长到超过 :ref:` 设定的数据块大小 <sharding-chunk-size>` 时,一个 mongos 会试图将这个数据块分裂成两个,分裂可能会导致不同分片之间数据块数量的不均衡.在这种情况下, mongos 会开始一次分片间的迁移使数据块重新均衡,参见 开启分片集合的均衡 获取更多分片间数据块均衡的细节.

Diagram of a shard with a chunk that exceeds the default chunk size of 64 MB and triggers a split of the chunk into two chunks.

Diagram of a shard with a chunk that exceeds the default chunk size of 64 MB and triggers a split of the chunk into two chunks.

数据块大小

MongoDB中默认的 chunk 大小是64M,你可以 调整数据块的大小,但要注意到这有可能会集群造成性能影响.

  1. 数据块大小较小时可以使得分片间的数据更均衡,但是是以频繁的迁移为代价的,会对 mongos 造成压力.

  2. 数据块大小较大时会使得均衡较少,这从网络传输 mongos 的角度来说更高效,但是,这种高效是通过数据不均衡的加重为代价的.

在很多情况下,以分片间数据略微的不均衡来防止频繁的迁移或者无效的迁移,是合理的.

限制

修改数据块大小影响数据块的分裂,但他的影响受到其他的一些限制.

  • 自动分裂只在数据插入与更新时发生,因此如果你减小了数据块的大小,需要花费一些时间使所有数据块分裂成新大大小.

  • 分裂不能被回滚,如果你增加了数据块大小,现有的数据块只有通过插入与更新才能逐渐达到新的设定值.

注解

数据块的范围包含了范围中的最小值,不包含最大值.