索引
用到ensureIndex方法建立索引,1为升序,-1为降序。
MongoDB数据库在创建集合的时候,默认会为_id创建索引。
注:当系统已有大量数据时,创建索引就是一个非常耗时的工作,只需要指定backgroud:true即可。
db.yyd.ensureIndex({"name":1},{"backgroud:true"})
注:下面的查询将不会用到索引,因为查询的顺序与索引建立的顺序不一样。
db.yyd.find({"address":{"short":"CD","city":"chengdu"}})
此时,无论city和short的顺序是前是后,都会用到索引。
为了后面方便查看,先把刚才建立的索引删除掉。
这里的唯一索引就像非NoSQL数据库里面的主键一样。如果集合中有重复的值,系统会报错。
先向里面插入数据,使name和age为索引,当查询的时候用explain()方法来查看查询所用到的索引indexBounds参数。由上图看出,没用到索引。
现在通过hint命令强制使用索引。
索引的名称是默认取好了的,一般是“索引_1”这样的,当然也可以自己设置索引的名字。
db.yyd.ensureIndex({"name":1},{"name":"index_name"})
profiler相当于MySQL中的慢查询日志,但是比慢查询日志更详细。
使用profiler优化器就必须先开启它,在mongoDB中有两种方法控制profiler的开关和级别。
方法一:
在启动服务的时候加上 –profiler 参数,通过这个参数来设置profiler的级别。
方法二:
db.setProfilingLevel(level,slowms)
在客户端调用setProfilingLevel()方法。
level为级别,0代表不开启,1代表记录慢命令(默认100ms),3代表记录所有命令。
slowms代表慢命令执行的时间,超过这个时间将写入日志中。
查询profiler日志
db.system.profile.find()
show profile
性能优化
mongosniff --source NET lo
mongostat
>db.serverStatus()
>db.stats()
本文转自我爱物联网博客园博客,原文链接:http://www.cnblogs.com/yydcdut/p/3563704.html,如需转载请自行联系原作者