mergeChunks 方法允许你将空的数据块合并到同分片相邻的数据块中.如果在设定的片键范围内没有数据,这个数据块就是空的. 空的 数据块 会影响 balancer 对分片间数据均衡情况的正确判断.空数据块在几种情况下会发生,包括: 如果 预分裂 创建了过多数据块,数据在数据块间的分布可能不均衡: 如果你删除了集群中很多数据,有些数据块可能不会包含数据.注意,mergechunks方法必须合并的chunk是至少有一个是空块才能合并.使用下面方法确认一个块是空块:
mongos> use mydb
switched to db mydb
mongos> db.runCommand({ "dataSize": "mydb.mycol1", "keyPattern": { id: 1 }, "min": { "id": 131012}, "max": { "id": 200000 }})
{ "size" : 0, "numObjects" : 0, "millis" : 0, "ok" : 1 }
说明此事传递给 dataSize 的数据块是空的
使用以下命令,合并存在于同一个 shard 上且至少一个为空数据块的两个数据块: