MongoDB学习笔记(四)--索引 && 性能优化
索引
- 基础索引
用到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学习笔记(四)--索引 && 性能优化的更多相关文章
- mongodb学习笔记之索引(转)
一.索引基础: MongoDB的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的优化技巧.下面是创建索引的命令: > db.test.ensureIndex({" ...
- MongoDB学习笔记四:索引
索引就是用来加速查询的.创建数据库索引就像确定如何组织书的索引一样.但是你的优势是知道今后做何种查询,以及哪些内容需要快速查找.比如:所有的查询都包括"date"键,那么很可能(至 ...
- MongoDB学习总结(四) —— 索引的基本用法
说到索引,大家肯定都在关系型数据库或多或少接触过,它的主要目的是加速查询的速度.MongoDB作为一种数据库,当然也提供了索引的操作. 我们先插入1万条测试数据. 首先,我们先来看看不加索引查找nam ...
- Mongodb学习笔记四(Mongodb聚合函数)
第四章 Mongodb聚合函数 插入 测试数据 ;j<;j++){ for(var i=1;i<3;i++){ var person={ Name:"jack"+i, ...
- PHP性能优化学习笔记--语言级性能优化--来自慕课网Pangee http://www.imooc.com/learn/205
使用ab进行压力测试 ab -n行数 -c并发数 url 重点关注下面两点: 1.Request per secend : 每秒可接收的请求数 2.Time per request : 每次请求所耗费 ...
- MongoDB学习笔记-04 索引
索引是用来加速查询的.有了索引之后,数据库不必进行全表扫描,只需先在索引中查找,再根据找到的索引查找数据.MongoDB的索引几乎和传统关系型数据库一样. 创建索引 创建索引是在相应的集合中使用ens ...
- PHP性能优化学习笔记--PHP周边性能优化--来自慕课网Pangee http://www.imooc.com/learn/205
PHP一般运行于Linux服务器中,周边主要包括:Linux运行环境.文件存储.数据库.缓存.网络 常见PHP场景的开销次序: 读写内存<<读写数据库(使用内存作为缓存.异步处理)< ...
- MongoDB学习笔记(四) 用MongoDB的文档结构描述数据关系
MongoDB的集合(collection)可以看做关系型数据库的表,文档对象(document)可以看做关系型数据库的一条记录.但两者并不完全对等.表的结构是固定的,MongoDB集合并没有这个约束 ...
- MongoDB 学习笔记四 C#调用MongoDB
驱动 下载 https://github.com/mongodb/mongo-csharp-driver/downloads 项目地址: https://github.com/mongodb/mong ...
- MongoDB 学习笔记之 索引
索引: db.media.createIndex({"Tracklist": 1}) 1表示升序 -1表示降序 我们要着重看一下对数组创建索引的情况. 构建一个集合:db.medi ...
随机推荐
- 项目Alpha冲刺——代码规范、本次冲刺任务与计划
作业格式 课程名称:软件工程1916|W(福州大学) 作业要求:项目Alpha冲刺(团队) 团队名称: 那周余嘉熊掌将得队 作业目标:代码规范.本次冲刺任务与计划 团队信息: 队员学号 队员姓名 博客 ...
- 使用gdb调试
启用gdb进行调试二进制程序,必须在二进制程序在采用gcc或g++编译时加入-g参数 启动gdb进行调试的几种形式: 直接启动gdb程序进行调试program程序 gdb program 启动gdb挂 ...
- gpfs中遇到的错误
主要导致这个问题是之前GPFS格式化的磁盘会留下gpfs的一些信息 mmcrnsd: Disk name nsd01 is already registered for use by GPFS.mmc ...
- github安装k8s
转:https://mritd.me/2016/10/29/set-up-kubernetes-cluster-by-kubeadm/#23镜像版本怎么整 一.环境准备 首先环境还是三台虚拟机,虚拟机 ...
- mysql高性能索引
独立索引: 独立索引是指索引列不能是表达式的一部分,也不能是函数的参数 例1: SELECT actor_id FROM actor WHERE actor_id+1=5 --这种写法,就算在acto ...
- Fiddler手机抓包,相关细节回顾
目录 0. 准备工作 1. Fiddler配置 2. iPhone配置 3. 抓包示例 上篇Fiddler教程,我们教了大家Fiddler安装配置及如何使用Fiddler进行基本的Http抓包及模拟请 ...
- C# 集合类-接口
所谓,程序=数据结构+算法. 我目前的日常工作就是繁琐的业务流程和增删改查之类的. 其实繁琐的业务流程也不过是改变一下数据的状态.怪不得叫,面向数据库编程.哈哈. 所以呢,了解一下各种 .net内置的 ...
- 2017-2018-1 JAVA实验站 第六、七周作业
2017-2018-1 JAVA实验站 第六.七周作业 详情请见团队博客
- java的注解
本文转载自:http://www.cnblogs.com/mandroid/archive/2011/07/18/2109829.html 一.概念 Annontation是Java5开始引入的新特征 ...
- zookeeper【3】服务发现
服务发现:指对集群中的服务上下线做统一管理,每个工作服务器都可以作为数据的发布方,向集群注册自己的基本信息,而让某些监控服务器作为订阅方,订阅工作服务器的基本信息.当工作服务器的基本信息改变时,如服务 ...