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应用提供可扩展的高性能数据存储解决方案. 本文将从操作手册.技术研究.会议分享.场景应用等几个方面给大家推荐干货好文 ...
随机推荐
- Qt For Android 环境搭建
由于时间有限,未抽出时间进行android环境搭建整理的流程,这里先贴出几个参考的地址 https://blog.csdn.net/foruok/article/details/23528293 此链 ...
- python分类
python是一种动态解释性的强类型语言. python下分几个类别,分别是cpython,jypython,ironpython,pypy等等,这些属于不同的解释器,但编写规范只有一个就是pytho ...
- Python pip下载过慢解决方案
pip是一个python的包安装与管理工具,安装python时候可以选择是否安装,如果安装了pip可以使用命令查看版本 C:\Users\Vincente λ pip -V pip 19.2.3 fr ...
- 太湖杯writeup
CheckInGame checkInGame本题是个js游戏 设置个断点后,之后修改时间即可,然后把游戏玩完就行. ezWeb 本题是模板注入,过滤了{}和"",用︷︸和无引号的 ...
- [原题复现]HCTF 2018 Warmup(文件包含)
HCTF 2018 Warmup 原题复现:https://gitee.com/xiaohua1998/hctf_2018_warmup 考察知识点:文件包含漏洞(phpmyadmin 4.8.1任意 ...
- 计算思维(美国CMU周以真教授)
博主注:GIScience会议是国际上最为著名的地理信息系统领域的国际会议,自2000年起,每两年举办一次,GIScience 2008会议邀请了美国卡内基-梅隆大学(CMU)计算机系华裔教授周以真博 ...
- 面试官:就问个Spring容器初始化和Bean对象的创建,你讲一小时了
前言 spring作为一个容器,可以管理对象的生命周期.对象与对象之间的依赖关系.可以通过配置文件,来定义对象,以及设置其与其他对象的依赖关系. main测试类 public static void ...
- U盘数据丢失怎么办,还能恢复吗
有时候在用U盘的时候会出现数据丢失或者U盘无法打开的问题,检查过之后,发现U盘格式变成了RAW,这是怎么回事?遇到这种情况该怎么解决呢? 首先来看看造成u盘格式变为RAW的主要原因: 1.非正常退出u ...
- Django----Modelviewset继承
1.modelviewset 认证.权限.限流.序列化.分页.过滤.排序 modelviewset的应用场景是: 1.主要应用于数据接口 2.对数据库的增删改查 3.在视图函数中没有很多业务逻辑需要来 ...
- 【Usaco 2009 Gold】JZOJ2020年9月19日提高B组T4 过路费
[Usaco 2009 Gold]JZOJ2020年9月19日提高B组T4 过路费 题目 Description 跟所有人一样,农夫约翰以着宁教我负天下牛,休叫天下牛负我的伟大精神,日日夜夜苦思生财之 ...