您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
mongodb-手动预先分片
发布时间:2017-11-22 19:05:52编辑:雪饮阅读()
手动预先分片
手动预先分片的好处:
可以提前给每个分片服务器分配好chunks,防止数据的增加导致chunks移动从而导致的io性能问题。
没有预先分片的一个真实案例所体现出来的弊端,有两个分片服务器没有使用预先分片,后来这两个服务器的chunks都已经饱和了,io资源很紧张。这时候就添加了第三台服务器,此时由于没有使用预先分片,chunks大量的移动,导致mongodb服务崩溃了。
以shop数据库user表为例,这里对shop数据库的user表进行预先分片,片键为userid
在路由器上执行如下命令
sh.shardCollection('shop.user',{userid:1})
自定义预分片的chunks形成条件
这里在路由器上执行每1000条形成一个chunks单元的命令如下
for(var i=1;i<=40;i++){sh.splitAt('shop.user',{userid:i*1000})}
这些空的chunk会均匀的移动到各片上
然后路由器上添加数据观察分片情况
use shop
for(var i=1;i<40000;i++){db.user.insert({userid:i,name:'zhuanShengBen'})}
关键字词:mongodb,分片