MongoDB手动预分片(九)

MongoDB手动预分片(九)

一、书接上文

在上篇文章总介绍了搭建mongodb分片,但是由于chunk是在主分片上先存数据,然后将主分片上的chunk数量和其他分片上chunk数量的多少作比较,如果主分片上的chunk数量大于其他分片上的chunk数量,则将主分片上的chunk向其他分片移动。这样就会造成不同分片服务器之间的IO繁忙。在本篇中采用手动分片来解决这个问题。

上篇文章地址:https://blog.csdn.net/m0_38039437/article/details/80234567

二、说动手就动手

1、分片前先申明分片的数据库和表格。例如:对shop数据库的user表进行分片,分片依据user_id字段拆分。

 sh.shardCollection('shop.user',{user_id:1})

2、手动分片

①、分片语法:sh.splitAt(数据库.表格,{分割策略})

for(var i=1;i<=10;i++){sh.splitAt('shop.user',{user_id:i*1000})}

预先在shop数据库的user表上根据user_id字段数量分割,每隔1K条数据分一个chunk一共分10次,这样的界限切好chunk(虽然chunk是空的), 这些chunk将会均匀移动到各片上.

②、查看手动分片后chunk分配的状态。执行:sh.status()

③、插入数据,观察每个分片上存储的数据

for(var i=1;i<=50000;i++){db.user.insert({user_id:i,name:'hell user'+i})}

分别在每个几点的分片服务器上登录查看数据量,发现已经按照预先定义好的规则进行存放数据。

27017节点分片的数据

27018节点分片上的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值