索引                                                                                            

  • 基础索引

    用到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. 学习笔记:ORACLE 性能优化求生指南

    第一章.ORACLE性能调优:一种系统化方法 数据库优化顺序:     1.调整SQL,PL/SQL 代码及优化物理设计(分区,索引)尽可能的减少应用的请求:     2.减少对锁,闩锁,缓存及ORA ...

  2. TDDFT计算软件Octopus学习笔记(四):带隙优化方法

    密度泛函理论是一种基态的理论,然而能带结构和带隙属于物质的激发态特性.因此DFT的固有缺点就是会低估带隙能量.这一缺点可以通过不同的方式加以修正.本文介绍两种方法. (一) DFT+U方法 (以ZnO ...

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

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

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

    网址:http://blog.csdn.net/xundh/article/details/49449467 驱动 下载  https://github.com/mongodb/mongo-cshar ...

  5. MongoDB学习笔记(一) MongoDB介绍及安装

    系列目录 MongoDB学习笔记(一) MongoDB介绍及安装     MongoDB学习笔记(二) 通过samus驱动实现基本数据操作     MongoDB学习笔记(三) 在MVC模式下通过Jq ...

  6. MongoDB学习笔记(四)使用Java进行实时监控与数据收集(空间使用量、连接数)

    目录: MongoDB学习笔记(一)环境搭建与常用操作 MongoDB学习笔记(二)使用Java操作MongoDB MongoDB学习笔记(三)使用Spring Data操作MongoDB Mongo ...

  7. MySQL高级学习笔记(四)

    文章目录 MySQL高级学习笔记(四) 1. MySql中常用工具 1.1 mysql 1.1.1 连接选项 1.1.2 执行选项 1.2 mysqladmin 1.3 mysqlbinlog 1.4 ...

  8. MongoDB 学习笔记八 复制、分片、备份与恢复、监控

    MongoDB 学习笔记八 复制.分片.备份与恢复.监控 MongoDB复制(副本集) 什么是复制? MongoDB 复制原理 MongoDB 副本集设置 副本集添加成员 MongoDB 分片 分片 ...

  9. MongoDB学习笔记(入门)

    MongoDB学习笔记(入门) 一.文档的注意事项: 1.  键值对是有序的,如:{ "name" : "stephen", "genda" ...

最新文章

  1. KD-Tree复习笔记(BZOJ1941 BZOJ2648 BZOJ4066)
  2. java生成0~9个9个不相等的整数
  3. arraycopy方法的作用_System. arraycopy()入门指南
  4. java第三章:流程控制语句
  5. JAVA中的适配器应用_Java适配器模式详解和实际应用.md
  6. JS 和 Java 中URL特殊字符编码方式
  7. (转)Rust:Ownership,Reference和Lifetime详解
  8. 金属网材质贴图素材推荐 精品 小众
  9. gdiplus 水印_GDIPlus合成半透明图片批量添加图片水印
  10. 仪表盘故障图像识别_一张图教你识别汽车故障灯!
  11. Eclipse搭建Android开发环境并运行Android项目 (详细)
  12. Ability、capability 和 capacity
  13. 提高多表关联数据查询效率
  14. CSS3实现骗人版无缝轮播图
  15. 全网最全斗音短视频新老账号起号技巧
  16. 音乐外链生成php,如何使用php生成短链接网址 第三方API
  17. 什么是平台架构?平台架构的用处有哪些?
  18. MySQL UDF 提权
  19. Java8 ,LocalDate,LocalDateTime处理日期和时间工具类,
  20. 计算机专业助我成长作文600,资助助我成长作文

热门文章

  1. 人生不值得,我在用python.1_关于python
  2. CUDA学习(九十七)
  3. Silevo需征收进口关税?美光伏巨头各执一词
  4. Scala基础 - 函数和方法的区别
  5. AngularJS学习笔记(1) - AngularJS入门
  6. Hexo 简明入门教程(一)
  7. 在RHEL5下构建Nessus漏洞检测系统
  8. C/C++ sizeof(上)
  9. 九.类的进化(魔法方法、特性和迭代器)
  10. GlusterFS分布式存储系统