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 ...
随机推荐
- PIPESTATUS 对于ksh 无效
BASH SHELL中,通常使用 $? 来获取上一条命令的返回码. 对于管道中的命令,使用$?只能获取管道中最后一条命令的返回码,例如 下面的例子中/not/a/valid/filename是一个不存 ...
- python sys.argv[]的用法简明解释
sys模块中文参考文档:http://xukaizijian.blog.163.com/blog/static/170433119201111625428624/ sys.argv[]: 「argv」 ...
- BeautifulSoup与Xpath解析库总结
一.BeautifulSoup解析库 1.快速开始 html_doc = """ <html><head><title>The Dor ...
- JavaScript基础 :学习javascript的原因
JavaScript是世界上最流行的脚本语言,因为你在电脑.手机.平板上浏览的所有的网页,以及无数基于HTML5的手机App,交互逻辑都是由JavaScript驱动的. 简单地说,JavaScript ...
- luoguP4492 [HAOI2018]苹果树 组合计数 + dp
首先,每个二叉树对应着唯一的中序遍历,并且每个二叉树的概率是相同的 这十分的有用 考虑\(dp\)求解 令\(f_i\)表示\(i\)个节点的子树,根的深度为\(1\)时,所有点的期望深度之和(乘\( ...
- redis学习之一 - linux下安装配置
Content 0.序 1.如何安装? 2.配置参数及其意义 3.设为linux服务 0.序 本文主要是记录Redis在 Centos下的安装配置 .文中如无特别说明.表示redis-3.2.10代码 ...
- git命令行使用帮助
克隆代码库 git clone git_project_url 提交代码 git commit -m 'commit messge'
- 自动化运维工具 ~puppet~
一.模板的应用 到目前为止,资源申报.定义类.声明类等所有功能都只能一个manifest文件中实现,但这却非有效的基于puppet管理IT资源架构的方式.实践 中,一般需要把manifest文件分解成 ...
- CentOS 7提示:ERROR unsupported format character '(0xffffffe7) at/域安装失败,您可以运行下列命令重启您的域:
别理会,直接装即可,这个错误不影响使用.
- CentOS 6.5系统下安装和配置NFS服务
一.环境介绍: 服务器:centos 192.168.1.225 客户端:centos 192.168.1.226 二.安装: NFS的安装配置: centos 5 : 1 yum -y instal ...