mongodb中的分片和索引

创建索引:db.$cname.createIndex({keys, options} )

例:

db.col1.createIndex({name:1},{unique:true})  //给name创建范围唯一索引

db.col1.createIndex({age:"hashed"}) //给age创建hash索引,hash索引不能设置唯一键

注:hashed索引需要保存hash值,所以占用空间会大一点。

开启分片:sh.enableShareding(database)

给集合初始化分片:sh.shardCollection( namespace, key, unique, options ),

  • namespace:"dbname.colname",
  • key:均衡字段,可以有多个字段
  • unique:是否设置唯一索引
  • options:分片选项,比如设置初始chunk的总数量:numInitialChunks

例:

sh.shardCollection("d1.col1",{age:"hashed"},false,{numInitialChunks:1024})

sh.shardCollection("d1.col1",{num:1},true,{numInitialChunks:1024})

如果集合中已经有数据,则进行分片时对数据量有要求,数据量超过限制则不能进行分片,限制跟分片键的索引大小成反比,跟chunksize成正比。

分片键:

  • 一个要能足够的分散,这样请求压力才能平均分散到各个分片。如果键值比较单调,比如按时间连续,则不适合使用范围分片,可以采用hashed分片。
  • 二是要有足够的多样性,这样才能均衡到各个分片。
  • 分片键必须先创建一个索引才能设置分片,索引可以是以分片键为前缀。
  • 分片键如果没有使用_id,则在整个集合中_id不能保证唯一,只能在各个分片上保证唯一。
  • 除_id外,只能在分片键或分片键的前缀创建唯一索引。这也就决定了:启用分片的集合不能创建分片键及其前缀以外的唯一索引,在创建了唯一索引的集合上也不能使用其他分片键开启分片。

查看数据库信息:

db.stats()

 

 

 

 

 

 

 

转载于:https://my.oschina.net/u/150599/blog/3055394

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值