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优化的更多相关文章

  1. (转)mongdb性能优化收集

    一.数据库最大连接数问题当你在后台日志中,发现大量“connection refused because too many open connections: 819”信息时,一般跟你没有设置合适的最 ...

  2. HBase与MongDB等NoSQL数据库对照

    HBase概念学习(十)HBase与MongDB等NoSQL数据库对照 转载请注明出处: jiq•钦's technical Blog - 季义钦 一.开篇 淘宝之前使用的存储层架构一直是MySQL数 ...

  3. HBase概念学习(十)HBase与MongDB等NoSQL数据库对照

    转载请注明出处: jiq•钦's technical Blog - 季义钦 一.开篇 淘宝之前使用的存储层架构一直是MySQL数据库,配合以MongDB,Tair等存储. MySQL因为开源,而且生态 ...

  4. node.js(小案例)_使用mongodb对学生信息列表优化

    一.前言 1.这篇文章主要对上一篇案列在操作增删改的时候使用mongodb进行优化 2.项目源码(包含上):https://github.com/4561231/crud-express-node.g ...

  5. NOSQL之Redis、MongDB、Habase、Cassandra的介绍与比较

    一.Redis介绍     1.1Redis优点 (1)Redis拥有非常丰富的数据结构: (2)Redis提供事务的功能,可以保证一串命令的原子性,中间不会被任何打断. (3)数据存储在内存中,读写 ...

  6. mongdb与mysql的联系和区别

    与关系型数据库相比,MongoDB的优点:①弱一致性(最终一致),更能保证用户的访问速度举例来说,在传统的关系型数据库中,一个COUNT类型的操作会锁定数据集,这样可以保证得到“当前”情况下的精确值. ...

  7. 淘宝在hbase中的应用和优化

    本文来自于NoSQLFan联合作者@koven2049,他在淘宝从事Hadoop及HBase相关的应用和优化. 对Hadoop.HBase都有深入的了解,本文就是其在工作中对HBase的应用优化小结, ...

  8. RethinkDB是什么?—— 面向文档的NOSQL数据库,MVCC+Btree索引,pushes JSON to your apps in realtime采用push思路,优化的ssd存储

    RethinkDB是什么? RethinkDB是新一代的面向文档的数据库存储管理系统,原本是MySQL中针对SSD优化的一个存储引擎,后来脱离了MySQL成为了独立的系统. 数据如何存储在磁盘上? 数 ...

  9. MongoDB进阶之路:不仅仅是技术研究,还有优化和最佳实践--转载

    摘要:MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. 本文将从操作手册.技术研究.会议分享.场景应用等几个方面给大家推荐干货好文 ...

随机推荐

  1. sqlilab less32-less37

    less-32 过滤了单引号,双引号,斜杠,同时设置数据库为GBK编码,可以考虑宽字节注入, 当设置gbk编码后,遇到连续两个字节,都符合gbk取值范围,会自动解析为一个汉字.用脚本来测试下哪些符合 ...

  2. Redis 用的很溜,了解过它用的什么协议吗?

    我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在 ...

  3. 去年去阿里面试,被问到ArrayList和LinkedList,我是这样回答的!

    前言 在一开始基础面的时候,很多面试官可能会问List集合一些基础知识,比如: ArrayList默认大小是多少,是如何扩容的? ArrayList和LinkedList的底层数据结构是什么? Arr ...

  4. 13.java设计模式之模板模式

    基本需求: 制作豆浆的流程 选材--->添加配料--->浸泡--->放到豆浆机打碎 通过添加不同的配料,可以制作出不同口味的豆浆 选材.浸泡和放到豆浆机打碎这几个步骤对于制作每种口味 ...

  5. guitar pro系列教程(十五):Guitar Pro播放没有声音怎么办?

    相信很多朋友在安装了guitar pro打谱后都会发现没有声音,关于这个问题相信大家都很苦恼到底是什么问题呢,今天小编就这个问题与大家好好讨论讨论,希望对大家有帮助,感兴趣的朋友可以进来一起学习哦. ...

  6. 使用Camtasia来消除视频中的声音

    大多数情况下,我们在录制电脑屏幕的时候都会把音频输出也一起录制下来,但也会有时候要后期进行重新配音,需要把事先一同录制的音频消除掉,今天小编来给大家说一说如何消除这种的视频声音. 首先打开Camtas ...

  7. 思维导图软件iMindMap怎么用模板制作思维导图

    随着思维导图的不断发展,市场上相关的软件也越来越多.像XMind.MindManager等.每一款软件都有它独特的亮点.作为众多思维导图软件中的一款,iMindMap算是比较亮眼的了.现在很多人都在用 ...

  8. Android应用测试指南

    一.Android 的 SDK Windows 版本安装 按顺序安装以下内容 1.    安装JDK(Java Development Kit, 即Java开发工具包) 2. 安装Eclipse 集成 ...

  9. kafka producer 概要(看源码前,最好能掌握)

        kafakproducer概要(看源码前,最好能理解) 摘要 kafak 被设计用来作为一个统一的平台来处理庞大的数据的实时工具,在设计上有诸多变态的要求 它必须具有高吞吐量才能支持大量事件流 ...

  10. MySQL数据更新

    MySQL数据更新: 导读: 该练习是本人课程学习进行整理的,若有不对,欢迎指出! 该练习没有配套的sql文件,如果需要可以看之前的文章有student表等(MySQL查询练习); 这是最后一部分练习 ...