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. openstack常用命令-nova篇

    1.查看openstack版本 nova-manage version 2.查看节点 nova host-list 3.查看计算节点 nova hypervisor-list 4.查看计算节点上有哪些 ...

  2. kali 更新msf

    用leafpad打开,方便复制粘贴 leafpad /etc/apt/sources.list 然后复制下面的源覆盖原本的 deb http://mirrors.ustc.edu.cn/kali ka ...

  3. python-网络安全编程第二天(文件操作)

    前言 才吃完火锅嘿嘿,吃完把今天所学的内容写个博客当做笔记用哈哈! 文件操作 f=open("test.txt",w)直接打开一个文件,如果文件不存在则创建文件open模式w:以写 ...

  4. 关于oracle11g 和sqldeverloper的安装配置

    0友情提示:以下下载地址都是我的百度云分享链接安全无毒请放心下载! 电脑配置 win10 jdk版本1.7 下载oracle11G 版本 下载地址:安装很简单 sqldverloper(oracleD ...

  5. Word中如何调整MathType公式的间距

    作为一名理工科的学生,经常会面对一大堆公式,那么就要掌握在Word中编辑公式的技能,那么怎样才能在Word中编辑美观的公式呢?为了方便大家的使用,下面就详细介绍在Word中调整MathType公式间距 ...

  6. ElasticSearch 分词器,了解一下

    这篇文章主要来介绍下什么是 Analysis ,什么是分词器,以及 ElasticSearch 自带的分词器是怎么工作的,最后会介绍下中文分词是怎么做的. 首先来说下什么是 Analysis: 什么是 ...

  7. transient关键字的作用以及几个疑问的解决

    目录 1.从Serilizable说到transient 2.序列化属性对象的类需要实现Serilizable接口? 3.不想被序列化的字段怎么办? 4.ArrayList里面的elementData ...

  8. Java 在Excel中添加分离型饼图、环形图

    一.概述 Excel中可支持多种不同类型的图表,本文介绍如何绘制分离型饼图和环形图.其中,分离型饼图的绘制可分为整体分离型(即设置饼图分离程度)和局部分离(即设置点爆炸型值)两种情况.下面将以Java ...

  9. YoyoGo使用指南

    YoyoGo是一个使用Golang编写的一个简单.轻量.快速.基于依赖注入的微服务框架,目前依然在研发阶段,欢迎Star以及一起参与到框架的研发 GitHub地址:https://github.com ...

  10. Spring Cloud Alibaba 初体验(一) Nacos 配置中心

    一.Nacos 下载与初始化配置 本文使用1.2.0,下载地址:https://github.com/alibaba/nacos/releases Nacos 单机模式支持持久化配置到 MySQL 数 ...