Mongdb优化
1.索引
1)基础索引
--为集合colt1的x列创建升序基础索引
# cd /usr/local/mongodb4.2.2/bin
# ./mongo -uroot -p
> use db_test
> db.colt1.find();
> db.colt1.getIndexes();
> db.colt1.ensureIndex({x:1});
> db.colt1.getIndexes();
--为集合colt1的y列创建降序基础索引
> db.colt1.ensureIndex({y:-1});
> db.colt1.getIndexes();
--通过后台方式静默为colt1的y列创建升序索引,以免阻塞mongodb上的读写操作
> db.colt1.getIndexes();
> db.colt1.dropIndex("y_-1");
> db.colt1.getIndexes();
> db.colt1.ensureIndex({y:1},{background:true});
--查看当前活动的且运行时间超过3秒的后台创建索引任务
> db.currentOp({"active":true,"secs_running":{ "$gt":3}});
--kill掉正在运行的任务
> db.killOp(opid)
2)文档索引
--为colt1中addr列创建文档索引
> db.colt1.insert({x:"john",y:"student",addr:{country:"cn",city:"shanghai"}});
> db.colt1.find();
> db.colt1.ensureIndex({addr:1});
> db.colt1.getIndexes();
> db.colt1.find({addr:{"cn","shanghai"}});
> db.colt1.find({addr:{"shanghai","cn"}});
3)复合索引
--为colt1中x和y创建符合索引
> db.colt1.ensureIndex({x:1,y:-1});
> db.colt1.getIndexes();
> db.colt1.find().sort({x:1,y:-1});
4)唯一索引
--为colt1中x列创建唯一索引
> db.colt1.getIndexes();
> db.colt1.dropIndex("x_1");
> db.colt1.ensureIndex({x:1},{unique:true});
> db.colt1.insert({x:"mongodb"});
> db.colt1.insert({x:"mongodb1"});
> db.colt1.find();
5)强制使用索引
--强制使用x和y列上的复合索引
> db.colt1.find({x:"mongdb",y:"nohint"}).explain();
> db.colt1.find({x:"mongdb",y:"nohint"}).hint({x:1,y:-1}).explain();
6)删除索引
--删除colt1中x列上的索引
> db.colt1.dropIndex({x:1});
--删除colt1上名字为"y_1"的索引
> db.colt1.dropIndex("y_1");
--删除colt1上的所有索引
> db.colt1.dropIndexes();
7)重建索引
--删除并重建colt1上的所有索引
> db.colt1.reIndex();
8)查看执行计划
> db.colt1.find({x:1}).explain();
2.profile使用
1)开启profile
--通过启动参数开启profile
# cd /usr/local/mongodb4.2.2/bin
# ./mongod -f /etc/mongodb.cnf -profile=1
--通过客户端命令行开启
> db.setProfilingLevel(2);
> db.getProfilingLevel();
--注
0:不开启;
1:记录慢操作;
2:记录所有操作;
2)设置慢操作阈值
--设置慢操作阈值为1s
> db.setProfilingLevel(1,1000);
--查询大于100ms的profile记录
> db.system.profile.find({millis:{$gt:100}});
3.限制返回的列和记录数
--限制colt1中值返回x和y列的2条记录
> db.colt1.find({},{x:1,y:1}).sort({x:1}).limit(2);
Mongdb优化的更多相关文章
- (转)mongdb性能优化收集
一.数据库最大连接数问题当你在后台日志中,发现大量“connection refused because too many open connections: 819”信息时,一般跟你没有设置合适的最 ...
- HBase与MongDB等NoSQL数据库对照
HBase概念学习(十)HBase与MongDB等NoSQL数据库对照 转载请注明出处: jiq•钦's technical Blog - 季义钦 一.开篇 淘宝之前使用的存储层架构一直是MySQL数 ...
- HBase概念学习(十)HBase与MongDB等NoSQL数据库对照
转载请注明出处: jiq•钦's technical Blog - 季义钦 一.开篇 淘宝之前使用的存储层架构一直是MySQL数据库,配合以MongDB,Tair等存储. MySQL因为开源,而且生态 ...
- node.js(小案例)_使用mongodb对学生信息列表优化
一.前言 1.这篇文章主要对上一篇案列在操作增删改的时候使用mongodb进行优化 2.项目源码(包含上):https://github.com/4561231/crud-express-node.g ...
- NOSQL之Redis、MongDB、Habase、Cassandra的介绍与比较
一.Redis介绍 1.1Redis优点 (1)Redis拥有非常丰富的数据结构: (2)Redis提供事务的功能,可以保证一串命令的原子性,中间不会被任何打断. (3)数据存储在内存中,读写 ...
- mongdb与mysql的联系和区别
与关系型数据库相比,MongoDB的优点:①弱一致性(最终一致),更能保证用户的访问速度举例来说,在传统的关系型数据库中,一个COUNT类型的操作会锁定数据集,这样可以保证得到“当前”情况下的精确值. ...
- 淘宝在hbase中的应用和优化
本文来自于NoSQLFan联合作者@koven2049,他在淘宝从事Hadoop及HBase相关的应用和优化. 对Hadoop.HBase都有深入的了解,本文就是其在工作中对HBase的应用优化小结, ...
- RethinkDB是什么?—— 面向文档的NOSQL数据库,MVCC+Btree索引,pushes JSON to your apps in realtime采用push思路,优化的ssd存储
RethinkDB是什么? RethinkDB是新一代的面向文档的数据库存储管理系统,原本是MySQL中针对SSD优化的一个存储引擎,后来脱离了MySQL成为了独立的系统. 数据如何存储在磁盘上? 数 ...
- MongoDB进阶之路:不仅仅是技术研究,还有优化和最佳实践--转载
摘要:MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. 本文将从操作手册.技术研究.会议分享.场景应用等几个方面给大家推荐干货好文 ...
随机推荐
- Vue 组件化开发
组件化开发 基本概念 在最开始的时候,已经大概的聊了聊Vue是单页面开发,用户总是在一个页面上进行操作,看到的不同内容也是由不同组件构成的. 通过用户的操作,Vue将会向用户展示某些组件,也会隐藏某些 ...
- Linux 中deb文件选择安装路径
deb文件安装后默认目录在/usr**中如果想指定自定义安装目录 选择自定义目录 sudo dpkg -i --instdir=/to/your/customer/path ***.deb 软连接创建 ...
- tp5配置引入使用redis
1.首先你的php得是已经安装了redis扩展的 2.在tp里找到config.php配置文件,找到cache,改成下面的样子 'cache' => [ // 选择模式 'type' => ...
- 一遍记住Java常用的八种排序算法
1.直接插入排序 经常碰到这样一类排序问题:把新的数据插入到已经排好的数据列中. 将第一个数和第二个数排序,然后构成一个有序序列 将第三个数插入进去,构成一个新的有序序列. 对第四个数.第五个数--直 ...
- java~通过springloaded实现热部署
之前写过使用自定义的classLoader进行动态加载,热部署:它有很多弊端,我总结一下: 当前项目不能引用第三方包 当前项目必须使用反射的方式调用第三方包的方法 写死的一些路径 springload ...
- 面试腾讯,字节跳动首先要掌握的Java多线程,一次帮你全掌握!
一.程序,进程,线程联系和区别 其实程序是一段静态的代码,它是应用程序执行的脚本.进程就是程序动态的执行过程,它具有动态性,并发性,独立性.线程是进程调度和执行的单位. 进程:每个进程都有独立的代码和 ...
- JS 数组对象
定义数组: 数组对象用来在单独的变量名中存储一系列的值. 创建一个数组有三种方法. 1: 常规方式: var myCars=new Array(); myCars[0]="Saab" ...
- ceph 集群快速部署
1.三台Centos7的主机 [root@ceph-1 ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 2.主机 ...
- 用FL Studio制作反向人声音效(Vocal Chops)
人声切片在各类电子音乐中都被广泛运用,在FL Studio20中我们也可以运用其自带的插件来制作属于我们自己的人声切片效果.在学完这篇文章后你就可以动手做出如Kygo.Martin Garrix等大牌 ...
- redis 一致性分析
转载: https://blog.csdn.net/qq32933432/article/details/108690254