zoukankan      html  css  js  c++  java
  • mongodb系列~ 索引详解

    一 索引分类
       1 单列索引 2 联合索引 3 唯一索引 4 TTL索引(删除数据) 5  2dsphere 6 文本索引 7 hash索引
    二 原则
       1 一个集合最多支持64个索引,单个索引最大内存占用500M 控制参数maxIndexBuildMemoryUsageMegabytes 索引键值不能超过1024个字节,否则会触发报错
       2  文本索引-1 只能最多有一个文本索引
                          2 db.collections.create!ndex( { comments :”text” })-针对comments字段添加文本索引
       3 最左联合索引
       4 支持覆盖索引
       5 支持同时创建升序+降序组合索引 1  db.collections.createindex({"column1":1,"column2":-1})
       6 TTL索引 -1  要注意列必须是日期或者包含日期的数组,否则不会删除,
                          2  本身是单列索引,不支持复合索引
                          3  列的本身不能是索引,否正需要删除后再进行添加
                          4  无法再capped集合上创建
                          5   db.collections.create Index ({”lastModifiedDate”: 1 } ,{ expireAfterSeconds: 3600 } )
       7 唯一性索引- 1 针对缺失列和重复列检测是否能添加,针对hash索引无法指定唯一性约束
                              2 db .members . createindex( { groupNumber : 1 ,astname :1 , firstname : 1 },{unique: true } )
    三 索引执行计划树
       第一部分
       1    COLLSCAN:全表扫描
       2    SORT:排序
       3    IXSCAN:索引扫描
       4    SUBPLA:未使用到索引的$or查询的stage返回
      第二部分
       1    nReturned:实际返回的行数
       2    totalKeysExamined:索引扫描的行数
       3    totalDocsExamined:非索引扫描的行数
             nReturned=totalKeysExamined & totalDocsExamined=0->我理解的是覆盖索引
             nReturned=totalKeysExamined=totalDocsExamined
    四 相关说明 skip    
      1 find().skip().limit() 来实现“翻页”功能 skip的作用是跳过N行,从这里我们可知,类似mysql的limit,skip的值越大,cpu消耗越高,因为要跳过的行数太多
      2 skip和limit操作在分片集群架构下是在mongos进行处理,并非mongod实例上,这点要注意先汇总再进行额外操作
      3 cursor.s kip ()方法通常很 昂贵,因为它需要 务器从集合或索引的开始处遍历,以便在开始
    返回结果之前获取偏移或跳过位置随着偏移量的增加 cursor.skip ()的运行将变得更慢 并且CPU 密集度更高 对于较大的集合,cursor.skip ()可能会成为 I/O 瓶颈.尽量不要使用skip,用别的方式代替

  • 相关阅读:
    年年岁岁花相似,岁岁年年竟相同
    两情相悦,亦或情投意合
    FreeBSD学习笔记1
    MySQL学习笔记2
    门户网站镜像站以及CDN技术
    候车
    MySQL学习笔记1
    JDBC | 第一章: 快速开始使用JDBC连接Mysql数据库之简单CRUD
    JDBC | 第零章: 什么是JDBC?
    JDBC | 第二章: JDBC之批量更新,添加,和删除操作
  • 原文地址:https://www.cnblogs.com/danhuangpai/p/10107432.html
Copyright © 2011-2022 走看看