zoukankan      html  css  js  c++  java
  • MongoDB查询优化

    项目场景:Mongo在首次查询特慢,后面就好的。如果长时间不查询,下次开始的第一次又将非常慢,于是从链接当时多方面,排查最终发现还是mongo索引建的有问题。

    MongoDB在大批量数据查询时经常会遇到查询耗时长,通常情况采用建各种索引来优化。

    首先第一步排查,可以在查询后使用.explain()来查看查询数据轨迹,便于分析每个分片的查询索引。

    db.Collection.find({}).explain()

    查看索引,如果不位可以根据查询条件,新建索引。

    1.查询索引

    db.COLLECTION_NAME.getIndexes()

    2.新建索引

    db.COLLECTION_NAME.ensureIndex(keys[options])

    此命令支持分片创建索引

    • keys,要建立索引的参数列表。如:{KEY:1},其中key表示字段名,1表示升序排序,也可使用使用数字-1降序。
    • options,可选参数,表示建立索引的设置。可选值如下:
      • background,Boolean,在后台建立索引,以便建立索引时不阻止其他数据库活动。默认值 false。
      • unique,Boolean,创建唯一索引。默认值 false。
      • name,String,指定索引的名称。如果未指定,MongoDB会生成一个索引字段的名称和排序顺序串联。
      • dropDups,Boolean,创建唯一索引时,如果出现重复删除后续出现的相同索引,只保留第一个。
      • sparse,Boolean,对文档中不存在的字段数据不启用索引。默认值是 false。
      • v,index version,索引的版本号。
      • weights,document,索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重。

    3.重新创建索引

    如果发现索引不合适就重新创建

    db.COLLECTION_NAME.reIndex()

    4.删除索引

    db.COLLECTION_NAME.dropIndex("INDEX-NAME")
  • 相关阅读:
    管理者应有意识地提高以下八项能力
    weblogic调优
    嵌入式软件的基本测试方法
    LoadRunner Interview Questions
    测试类型概念解析
    要是下次他们放手机时戴了手套怎么办?
    外企面试智力题
    贴张我家养的狗狗们的照片!
    一样一句
    软件测试工程师面试英语
  • 原文地址:https://www.cnblogs.com/loyung/p/9473584.html
Copyright © 2011-2022 走看看