博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mongodb系列~ mongodb索引详解
阅读量:7036 次
发布时间:2019-06-28

本文共 1522 字,大约阅读时间需要 5 分钟。

1 简介:讲讲mongo的索引 

2   索引 介绍 

    1 分类

    单列索引  联合索引   哈希索引 地理索引 文本索引  多key索引  

    2 索引属性

       1 唯一性  2 TTL属性(删除数据用) 3 部分索引 4 稀疏索引  

    3 操作

       1 后台创建索引  2 批量添加索引 

     4 应用

        mongo索引 也遵化 最左原则

2 慢日志类型    query insert update delete

3 查看慢日志

  1 db.system.profile.find() 慢日志总揽
  2 db.system.profile.find().sort({$natural:-1}) 查看最新的慢日志
  3 db.system.profile.find( { op: { $ne : 'command' } }).pretty() 返回所有除去command的操作类型
  4 db.system.profile.find( { ns : mydb.test } ).pretty() 返回特定合集
  5 db.system.profile.find(
  {
  ts : {
  $gt : new ISODate("2015-10-18T03:00:00Z"),
  $lt : new ISODate("2015-10-19T03:40:00Z")
  }
  }
  ).pretty() 返回指定时间内的集合
4 planSummary 执行计划
  0 执行sql类型
    query insert delete update
  1 扫描类型
      COLLSCAN:全表扫描 (着重关注)
      SORT:表明在内存中进行了排序 (着重关注)
      COUNT_SCAN:count使用了Index进行count时的stage返回 (着重关注)
      SUBPLA:未使用到索引的$or查询的stage返回 (着重关注)
      IXSCAN:索引扫描 (推荐)
      FETCH:根据索引去检索指定document
      SHARD_MERGE:将各个分片返回数据进行merge
      LIMIT:使用limit限制返回数
      SKIP:使用skip进行跳
      IDHACK:针对_id进行查询
     SHARDING_FILTER:通过mongos对分片数据进行查询
     COUNT:利用db.coll.explain().count()之类进行count运算
     COUNTSCAN:count不使用Index进行count时的stage返回
     TEXT:使用全文索引进行查询时候的stage返回
    PROJECTION:限定返回字段时候stage的返回
   注意 凡是出现上述标注的扫描类型的需要重点关注
 2 计划树
   1 nscannedObjects:被扫描的文档数量
   2 nReturned :返回的结果集文档数量
   3 reslen :返回结果集的大小
   4 locks :相关的锁情况
   5 XXms :总耗时

5 在shard.log也同样可以观察到,默认记录值500ms

6  具体sql优化示例

   1  批量操作 

       1 bulkWrite{order:false} 批量写  

          无序写  即便发生错误,其他插入还会继续进行 有序写 发生错误,便会停止,是串行化操作. 由 参数order控制

       2 insertMany{order:false} 批量插入  

         设置无序插入能提高你的插入效率

       3  update { upsert:true}        

           upsert:true:如果要更新的文档不存在的话会插入一条新的记录

       4 findAnyModify{ upsert:true}

  2  分页查询的优化 

 

转载于:https://www.cnblogs.com/danhuangpai/p/10107432.html

你可能感兴趣的文章
Oracle查看用户密码过期,修改永不过期
查看>>
php 中使用cURL发送get/post请求,上传图片,批处理
查看>>
基于Python37配置图片文字识别
查看>>
LOJ#2552. 「CTSC2018」假面(期望 背包)
查看>>
STRING使用EQUALS方法和==分别比较的是什么?
查看>>
window10下TensorFlow-gpu环境搭建
查看>>
(原創) i++和++i哪个速度较快? (C/C++) (C)
查看>>
(轉貼) p-teq公司的USB驗孕棒(USB Pregnancy Test) (News)
查看>>
python例程之质数
查看>>
电子书下载:Pro Silverlight 5 in C# 4th
查看>>
ERROR/AndroidRuntime(716): java.lang.SecurityException: Binder invocation to an incorrect interface
查看>>
关于.net 2.0 remoting 中 TCP Channel 用户认证探讨(一)
查看>>
BizTalk开发系列(六) BizTalk开发简述
查看>>
两步解决《内部服务器错误:500》
查看>>
电赛总结(二)——AD芯片总结之AD7715
查看>>
新建一个struts2项目
查看>>
find big file
查看>>
蒙特罗卡π算法(C++语言描述)
查看>>
数据库服务器 之 PostgreSQL的配置文件及用户权限
查看>>
自动生成单据号
查看>>