欢迎来到天天文库
浏览记录
ID:8976729
大小:29.40 KB
页数:6页
时间:2018-04-13
《mongodb索引讲解与性能调优》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、mongodb索引讲解与性能调优目录一、为什么用索引:1二、索引管理:1a)查询索引:1i.查询已有索引的明细:1ii.查询索引大小:2b)创建索引:2c)删除索引:2d)修改索引:2三、索引种类:3a)默认索引:3b)单列索引:3c)组合索引:3d)子文档索引:3e)唯一索引:3f)Sparse索引:3g)Covered索引:3四、正则表达式在索引中的使用:4五、索引分析:4a)索引命中:4b)使用explain4六、强制索引:5七、为排序创建索引:5八、实例讲解:5mongodb索引规则基本上与传统的关系库一样,大部分优化MySQL/Oracle/SQLi
2、te索引的技巧也适用于mongodb。一、为什么用索引:当查询中用到某些条件时,可以对该键建立索引,以提高查询速度。二、索引管理:a)查询索引:i.查询已有索引的明细:查询索引很简单,比如说需要查询mailaccess数据库中的Mailcollection上的索引时:mongo进入mongoMongoDBshellversion:1.8.1connectingto:test>usemailaccess进入mailaccessdatabaseswitchedtodbmailaccess>db.Mail.getIndexes()查询索引明细[{"name":"_i
3、d_","ns":"mailaccess.Mail","key":{"_id":1},"v":0},{"_id":ObjectId("4df063ac48857df7ac35c348"),"ns":"mailaccess.Mail","key":{"user":1,"folderId":1,"mailfilename":1},"name":"user_1_folderId_1_mailfilename_1","v":0},……i.查询索引大小:>db.Mail.totalIndexSize()查询索引大小114688索引所占大小,单位:字节b)创建索引:db.
4、Mail.ensureIndex({user:1,folderId:1,mailfilename:1})该命令会在Mail上创建一索引,默认索引名称的规则为:Keyname1_dir1_keyname2_dir2…,如果该索引的默认名称:user_1_folderId_1_mailfilename_1其中:1表示升序-1表示降序要是索引键很多时,最好自定义名称,如:定义名称为:index1db.Mail.ensureIndex({user:1,folderId:1,mailfilename:1},{name:'index1'})c)删除索引:如需删除名称为in
5、dex1的索引:db.Mail.dropIndex(‘index’)如需删除Mail中的所有索引时:db.Mail.dropIndex(‘*’)_id索引不会删除还有一种方式是删除collection,collection中的所以索引也会消失,注意:_id索引也会被删除。(删除collection中的数据不会删除索引)d)修改索引:Mongodb没有单独的修改索引的方法,如果需要修改某个索引,需要先删除旧有的索引,再创建新的索引。随着数据量的不断增长,你可能会发现某个collection需要修改索引或增加索引,此时创建索引就会很费力了,同时也很消耗性能。创建索
6、引时mongodb默认是阻塞式,阻塞会让索引建立得更快,任何此期间的请求将不能响应。可以使用{”background”:true}选项在后台完成,同时也可能正常处理请求。不过这种方式也会造成请求的响应很慢。如果非紧急情况,最好在晚上统一处理。一、索引种类:a)默认索引:Mongodb每个collection都会有一个默认主键_id,这个不能删除、也不会更名。当collection创建后,系统会自动创建一个”_id_”的索引,这个也是无法删除与更名的。b)单列索引:在单个栏位上创建的索引,比如,需要对Mail的read创建升序索引:db.Mail.ensureI
7、ndex({‘read’:1})c)组合索引:对多个键创建的索引,比如,需要对Mail的user与folderId创建降序索引:db.Mail.ensureIndex({‘user’:-1,’folderId’:-1})d)子文档索引:可以为内嵌文档的键创建索引,这种与普通索引没有什么区别,比如:需要对Mail中的attachments下的filename创建索引:db.Mail.ensureIndex({‘attachments.filename’:1})注意:attachments.filename必须位于’’之中,否则会报错e)唯一索引:唯一索引可能确保
8、collection的每一个docum
此文档下载收益归作者所有