MongoDB--分布式的索引建立

MongoDB–分布式的索引建立

一:在独立的服务器上建立索引

在独立的服务器上建立索引,可以在空闲时间在后台执行,以减轻服务器的性能开销。服务器建立索引的时候不支持读写请求。

>db.foo.ensureIndex({"name":1,"background":true}) 
//background选项,这样在创建索引的时候如果有读写请求,创建的过程会暂定一下

二:在副本集上建立索引

在集合比较大的情况下,如果直接在主节点建立索引,当索引被复制到其他节点上,带来的后果可能是所有的备份节点同时开始建立索引,突然间所有的备份节点都无法被客户端读取了。同时可能也无法进行同步复制。

推荐采用隔离创建索引的方法:

1.禁用复制链,将chainingAllowed=false
2.关闭一个备份节点服务器
3.将这个服务器以单机模式启动
4.在单机模式下创键索引
5.索引创建完成之后,将服务器作为副本集成员重新启动
6.对副本集的每个备份节点重复2~5步

现在除了主节点其他的复制集成员都创建了索引,现在有两个方式:
1)在主节点是创建索引(在主节点创建索引期间,不可用,可以修改读选项,在备份节点读取数据)
主节点创建索引完成之后,由于备份节点已经有了同样的索引,实际上不会再创建索引
2)让主节点退位为备份节点,也执行上面的2~5步。在主节点退位了普通节点期间,新的主节点被选出来,保证系统正常运行。创建完索引,重新添加进副本集。

注意:
与其他节点索引不同的节点,应该将优先级设置为0;
创建唯一索引的时候必须保证主节点中没有被插入重复的数据,否则备份节点备份数据会报错

三:分片集群上建立索引

分片集群建立索引,需要现关闭均衡器。再在每个分片上建立索引,建立索引的步骤和在副本集上建立索引是一样的。

四:删除索引

1.查看索引
//查看集合中的索引
mongos> db.table1.getIndexes()
2.删除索引
//删除指定集合的索引,参数1:集合,参数2:索引
>db.runCommand({"dropIndexes":"foo","index":"nams_hashed"})

//删除所有的索引,_id索引除外
>db.runCommand({"dropIndex":"foo","inndex":"*"})

注:删除文档不会对索引产生影响

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值