在64位MongoDB中,当分片过程从一个分片开始到另一个分片时?

时间:2011-02-18 07:57:32

标签: mongodb

我正在64位Linux机器上进行64位mongodb的单元测试。我有两个分片,两个分片都在本地机器中配置用于测试目的。所以当Sharding进程从一个分片开始时到了另一个?。我是否必须为第一个碎片给出任何大小限制,这样一旦第一个碎片中的大小超过,那么它将进入下一个碎片?请给我一个解决方案。

提前谢谢,

1 个答案:

答案 0 :(得分:2)

给定集合中的数据以连续/顺序保留方式存储在“数据块”中,默认大小为200MB。一旦一个块达到这个大小,它就会分成2个。然后一旦一个碎片有一个数据不平衡,mongo就会开始通过在碎片之间移动块来重新平衡数据 - 所以这些数据的“块”是感动。

因此,默认情况下,您需要使用合理数量的数据填充集合,以便最终获得200MB的多个块,然后开始在您的分片之间移动。出于测试目的,您可以通过在mongos进程上设置--chunkSize参数来更改此块大小(例如,我第一次使用它,我将其设置为1MB)。这意味着在开始看到分片开始之前,您只需要集合中的几MB数据。

以下是测试分片的一个很好的示例设置,它解释了chunkSize:
http://www.mongodb.org/display/DOCS/A+Sample+Configuration+Session

以下是分片介绍:
http://www.mongodb.org/display/DOCS/Sharding+Introduction#ShardingIntroduction-Chunks