zoukankan      html  css  js  c++  java
  • mongodb使用指南

    ##############

    关于索引

    • 原则上对于所有的查询都需要有对应的索引,对于上万条记录的collection,是一定需要对应的索引;

    • 索引长度限制1024字节(index key limit), 避免对大字符串字段创建索引和作为查询条件(MongoDB4.2有改动)

    • 注意组合索引创建的字段顺序

      • MongoDB组索引的字段顺利很重要,如最左原则,等值在前,范围查询在后, order by等在后
    • 尽量使用覆盖索引(Covered Indexes),只通过索引扫描就可以得到需要的数据,避免读取数据文件

    • 使用Projection来减少返回到客户端的文档内容,减少内存、网络带宽的浪费

      • MongoDB类似MySQL一样可以指定select返回的字段,避免使用select *的方式返回所有字段内容;

    游标的使用

    • 一个游标已经遍历完,则会自动关闭,如果没有遍历完,则需要手动调用close()方法

    • 游标默认在服务器上存在10分钟后释放,如果不主动调用close(),会造成不必要的资源浪费

    • 如果不能遍历完一个游标,通常意味着查询条件太宽泛,更应该考虑的问题是如何将条件收紧

    处理分页问题 - 避免使用count

    • 尽可能不要计算总页数,特别是数据量大和查询条件不能完全命中索引时

      • 建议只遍历前50条数据,比如: db.coll.find({x:100}).limit(50);

      • 为了计算总页数而进行的count()往往是拖慢页面整体加载速度的原因

    处理分页问题 - 巧分页

    • 避免使用skip/limit形式的分页,特别是数据量大的时候

    • 替代方案:使用查询条件+唯一排序条件

        例如:
        第一页: db.posts.find({}).sort({_id:1}).limit(20);
        第二页: db.posts.find({_id:{$gt< 第一页最后一个_id}}).sort({_id:1}).limit(20)
        第三页: db.posts.find({_id:{$gt< 第二页最后一个_id}}).sort({_id:1}).limit(20)
    

     

    #######################

    igoodful@qq.com
  • 相关阅读:
    简单的C语言编译器--语法分析器
    简单的C语言编译器--词法分析器
    简单的C语言编译器--概述
    最短路径算法
    拓扑排序和关键路径
    图的连通性
    最小生成树
    图的搜索
    gcc O2优化选项对内嵌汇编以及函数递归调用的影响
    gcc 在c代码中内嵌汇编调用c函数: 只是证明曾经我来过
  • 原文地址:https://www.cnblogs.com/igoodful/p/14378385.html
Copyright © 2011-2022 走看看