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学习笔记(四)--索引 性能优化相关推荐
- 学习笔记:ORACLE 性能优化求生指南
第一章.ORACLE性能调优:一种系统化方法 数据库优化顺序: 1.调整SQL,PL/SQL 代码及优化物理设计(分区,索引)尽可能的减少应用的请求: 2.减少对锁,闩锁,缓存及ORA ...
- TDDFT计算软件Octopus学习笔记(四):带隙优化方法
密度泛函理论是一种基态的理论,然而能带结构和带隙属于物质的激发态特性.因此DFT的固有缺点就是会低估带隙能量.这一缺点可以通过不同的方式加以修正.本文介绍两种方法. (一) DFT+U方法 (以ZnO ...
- MongoDB学习总结(四) —— 索引的基本用法
说到索引,大家肯定都在关系型数据库或多或少接触过,它的主要目的是加速查询的速度.MongoDB作为一种数据库,当然也提供了索引的操作. 我们先插入1万条测试数据. 首先,我们先来看看不加索引查找nam ...
- MongoDB 学习笔记四 C#调用MongoDB
网址:http://blog.csdn.net/xundh/article/details/49449467 驱动 下载 https://github.com/mongodb/mongo-cshar ...
- MongoDB学习笔记(一) MongoDB介绍及安装
系列目录 MongoDB学习笔记(一) MongoDB介绍及安装 MongoDB学习笔记(二) 通过samus驱动实现基本数据操作 MongoDB学习笔记(三) 在MVC模式下通过Jq ...
- MongoDB学习笔记(四)使用Java进行实时监控与数据收集(空间使用量、连接数)
目录: MongoDB学习笔记(一)环境搭建与常用操作 MongoDB学习笔记(二)使用Java操作MongoDB MongoDB学习笔记(三)使用Spring Data操作MongoDB Mongo ...
- MySQL高级学习笔记(四)
文章目录 MySQL高级学习笔记(四) 1. MySql中常用工具 1.1 mysql 1.1.1 连接选项 1.1.2 执行选项 1.2 mysqladmin 1.3 mysqlbinlog 1.4 ...
- MongoDB 学习笔记八 复制、分片、备份与恢复、监控
MongoDB 学习笔记八 复制.分片.备份与恢复.监控 MongoDB复制(副本集) 什么是复制? MongoDB 复制原理 MongoDB 副本集设置 副本集添加成员 MongoDB 分片 分片 ...
- MongoDB学习笔记(入门)
MongoDB学习笔记(入门) 一.文档的注意事项: 1. 键值对是有序的,如:{ "name" : "stephen", "genda" ...
最新文章
- KD-Tree复习笔记(BZOJ1941 BZOJ2648 BZOJ4066)
- java生成0~9个9个不相等的整数
- arraycopy方法的作用_System. arraycopy()入门指南
- java第三章:流程控制语句
- JAVA中的适配器应用_Java适配器模式详解和实际应用.md
- JS 和 Java 中URL特殊字符编码方式
- (转)Rust:Ownership,Reference和Lifetime详解
- 金属网材质贴图素材推荐 精品 小众
- gdiplus 水印_GDIPlus合成半透明图片批量添加图片水印
- 仪表盘故障图像识别_一张图教你识别汽车故障灯!
- Eclipse搭建Android开发环境并运行Android项目 (详细)
- Ability、capability 和 capacity
- 提高多表关联数据查询效率
- CSS3实现骗人版无缝轮播图
- 全网最全斗音短视频新老账号起号技巧
- 音乐外链生成php,如何使用php生成短链接网址 第三方API
- 什么是平台架构?平台架构的用处有哪些?
- MySQL UDF 提权
- Java8 ,LocalDate,LocalDateTime处理日期和时间工具类,
- 计算机专业助我成长作文600,资助助我成长作文