老师请问下,已存在的库集合可以进行片键设置分片吗,我发现设置了没生效
来源:8-5 【复制集】动手实战 - 搭建MongoDB复制集之创建复制集

慕仔1121686
2019-07-04
上面这种情况下对于dev库插入数据的时候发现不会随机存,只会往一个分片里面存,看起来hashed指定没有生效,
然后我把上面那个dev库删掉了,重新创建了一个新的同样的库,里面没有数据,顺便指定hashed片键,就和下面那个一样了,
这次插入数据就能随机存了,不知道原因失啥,没搞清楚,请老师指教下
写回答
1回答
-
同学你好~首先道歉这个回答有些迟了,因为导师最近临时赶工比较忙。。。希望答案还能给你一些帮助吧
对已经存储了数据的已有集合进行分片是完全没有问题的,可以使用sh.shardCollection(...)命令实现。这个命令会根据集合中已有的数据来生成chunks
虽然我没有见到你具体执行的命令,但是我的“猜测”是这样的:
对于已保存有数据的集合执行sh.shardCollection(...)命令时,数据库会根据设定的chunk尺寸来决定对已有数据创建几个chunk(如果你没有特别配置过的话,默认的chunk尺寸是64MB)。如果你集合中已有的数据大小没超过64MB,自然就只会生成一个chunk了
对于空白的集合执行sh.shardCollection(...)命令时,数据库会默认先创建两个chunk,所以即使是一个空的集合,都自带两个chunk呢
以上是我根据你的描述所做的判断,可能有误。如果你希望得到更具体的解读,建议你把你执行过的分片指令贴出来,我会再跟进的~
012019-09-14
相似问题