索引                                                                                            

  • 基础索引

    用到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

    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

    性能优化                                                                                      

    • 创建索引
    • 限定返回结果数
    • 只查询使用到的字段,而不查询所以字段
    • 采用capped集合
    • 采用Server Side Code Execution
    • hint
    • 采用profiling
    • mongosniff底层监控
    mongosniff --source NET lo
    • mongostat查看运行中的实例统计信息
    mongostat
    • db.serverStatus查看实例运行状态
    >db.serverStatus()
    • db.stats查看数据库状态
    >db.stats()

MongoDB学习笔记(三)--权限 && 导出导入备份恢复 && fsync和锁传送门  http://www.cnblogs.com/yydcdut/p/3558446.html

MongoDB学习笔记(五)--复制集 && sharding分片传送门 http://www.cnblogs.com/yydcdut/p/3564470.html

转载请注明出处:http://www.cnblogs.com/yydcdut/p/3563704.html

MongoDB学习笔记(四)--索引 && 性能优化的更多相关文章

  1. mongodb学习笔记之索引(转)

    一.索引基础:    MongoDB的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的优化技巧.下面是创建索引的命令:    > db.test.ensureIndex({" ...

  2. MongoDB学习笔记四:索引

    索引就是用来加速查询的.创建数据库索引就像确定如何组织书的索引一样.但是你的优势是知道今后做何种查询,以及哪些内容需要快速查找.比如:所有的查询都包括"date"键,那么很可能(至 ...

  3. MongoDB学习总结(四) —— 索引的基本用法

    说到索引,大家肯定都在关系型数据库或多或少接触过,它的主要目的是加速查询的速度.MongoDB作为一种数据库,当然也提供了索引的操作. 我们先插入1万条测试数据. 首先,我们先来看看不加索引查找nam ...

  4. Mongodb学习笔记四(Mongodb聚合函数)

    第四章 Mongodb聚合函数 插入 测试数据 ;j<;j++){ for(var i=1;i<3;i++){ var person={ Name:"jack"+i, ...

  5. PHP性能优化学习笔记--语言级性能优化--来自慕课网Pangee http://www.imooc.com/learn/205

    使用ab进行压力测试 ab -n行数 -c并发数 url 重点关注下面两点: 1.Request per secend : 每秒可接收的请求数 2.Time per request : 每次请求所耗费 ...

  6. MongoDB学习笔记-04 索引

    索引是用来加速查询的.有了索引之后,数据库不必进行全表扫描,只需先在索引中查找,再根据找到的索引查找数据.MongoDB的索引几乎和传统关系型数据库一样. 创建索引 创建索引是在相应的集合中使用ens ...

  7. PHP性能优化学习笔记--PHP周边性能优化--来自慕课网Pangee http://www.imooc.com/learn/205

    PHP一般运行于Linux服务器中,周边主要包括:Linux运行环境.文件存储.数据库.缓存.网络 常见PHP场景的开销次序: 读写内存<<读写数据库(使用内存作为缓存.异步处理)< ...

  8. MongoDB学习笔记(四) 用MongoDB的文档结构描述数据关系

    MongoDB的集合(collection)可以看做关系型数据库的表,文档对象(document)可以看做关系型数据库的一条记录.但两者并不完全对等.表的结构是固定的,MongoDB集合并没有这个约束 ...

  9. MongoDB 学习笔记四 C#调用MongoDB

    驱动 下载 https://github.com/mongodb/mongo-csharp-driver/downloads 项目地址: https://github.com/mongodb/mong ...

  10. MongoDB 学习笔记之 索引

    索引: db.media.createIndex({"Tracklist": 1}) 1表示升序 -1表示降序 我们要着重看一下对数组创建索引的情况. 构建一个集合:db.medi ...

随机推荐

  1. 使用gdb调试

    启用gdb进行调试二进制程序,必须在二进制程序在采用gcc或g++编译时加入-g参数 启动gdb进行调试的几种形式: 直接启动gdb程序进行调试program程序 gdb program 启动gdb挂 ...

  2. Highmaps网页图表教程之Highmaps第一个实例与图表构成

    Highmaps网页图表教程之Highmaps第一个实例与图表构成 Highmaps第一个实例 下面我们来实现本教程的第一个Highmaps实例. [实例1-1:hellomap]下面来制作一个中国地 ...

  3. 1008 Elevator (20)(20 point(s))

    problem The highest building in our city has only one elevator. A request list is made up with N pos ...

  4. [ 转载 ] Centos安装Mysql数据库纪录

    yum install mysql-community-server依赖关系错误 https://www.cnblogs.com/lzj0218/p/5724446.html rpm -qa|grep ...

  5. redis keys 命令

    ## 删除存在的key del key ## 序列体弱给定key,并返回被序列化的值 dump key ## 检查key是否存在 exists key ## 为给定key设置过期时间 expire k ...

  6. 模型构建<3>:交叉验证

    交叉验证是模型比较选择的一种常用方法,本文对此进行总结梳理. 1.交叉验证的基本思想 交叉验证(cross validation)的基本思想就是重复地利用同一份数据. 2.交叉验证的作用 1)通过划分 ...

  7. Alpha 冲刺报告6

    重感冒,重启中,停工一天

  8. 认识javascript中的作用域和上下文

    javascript中的作用域(scope)和上下文(context)是这门语言的独到之处,这部分归功于他们带来的灵活性.每个函数有不同的变量上下文和作用域.这些概念是javascript中一些强大的 ...

  9. sgu 176 上下界网络流最小可行流带输出方案

    算法步骤: 1. 先将原图像最大可行流那样变换,唯一不同的是不加dst->src那条边来将它变成无源无汇的网络流图.直接跑一边超级源到超级汇的最大流. 2. 加上刚才没有加上的那条边p 3. 再 ...

  10. Python— isinstance用法说明

    在学习自动化测试的脚本中发现了这个函数,所以在网上查了一下资料进行如下整理: 通过帮助查看如下: 作用:来判断一个对象是否是一个已知的类型: 其第一个参数(object)为对象,第二个参数为类型名(i ...