热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

【MongoDB】MongoDB之八大优化技巧

技巧一、尽量减少磁盘访问内存访问要比磁盘访问快得多。所以使用优化的本质就是尽可能地减少对磁盘的访问。内存的读取速度要比磁盘速度快一百万倍。读磁盘要消耗很长时间。几种简单的办法:使用SSD(固态硬盘);增加内存可以减少对硬盘的读取,让常用的文

技巧一、尽量减少磁盘访问 内存访问要比磁盘访问快得多。所以使用优化的本质就是尽可能地减少对磁盘的访问。 内存的读取速度要比磁盘速度快一百万倍。读磁盘要消耗很长时间。几种简单的办法:使用SSD(固态硬盘);增加内存可以减少对硬盘的读取,让常用的文

技巧一、尽量减少磁盘访问

内存访问要比磁盘访问快得多。所以使用优化的本质就是尽可能地减少对磁盘的访问。
内存的读取速度要比磁盘速度快一百万倍。读磁盘要消耗很长时间。几种简单的办法: 使用SSD(固态硬盘);增加内存可以减少对硬盘的读取,让常用的文档在内存中;

技巧二、使用索引减少内存占用

索引是有序的,所以不必遍历全部项。当查询时候会先根据索引查到索引中的结果,然后符合条件的文档加载到内存中,从而减少内存占用。

技巧三、不要到处使用索引

这里要注意,不是所有的查询都可以用索引的。索引一般用在返回结果只是总体数据的一小部分的时候。根据经验,一旦要大约返回集合一半的数据就不要使用索引了。
若是已经对某个字段建立了索引,又想在大规模模糊查询时候不使用它(因为使用时候可能较低效)可以使用自然排序,用{“$natural”:1}来强制mongodb禁用索引。自然排序就是“按照磁盘上的存储顺序返回数据”,这样mongodb就不会使用索引了。

技巧四、索引覆盖查询

如果只想返回某些字段且所有这些字段都可放在索引中,mong odb可以做索引覆盖查询(covered index query),这种查询不会访问指针指向的文档,二是直接用索引的数据返回结果。
例如: db.foo.ensuIndex({x:1, y :1,z:1}) 现在查询被索引的字段,并只要求返回这些字段,mongodb就没必要加载整个文档。 db,foo.find({x: ceriteria, y: ceriteria})
这样的查询仅仅访问了索引的数据,而没有访问整个集合的数据;

技巧五、使用复合索引加快多个查询

查询只要和索引开头部分匹配就能利用索引,所以创建索引时要考虑这些查询依赖的所有字段。并且根据各个字段查询的频率定义索引字段顺序;

技巧六、通过建立分级文档加快扫描

将数组组织有层次话,不仅可以让其看着更有条理,还可以让mongodb在偶尔没有索引时候也能快速查询。 如果文档没有层次结构的话,mongodb必须遍历文档中的每个字段。合理使用层次可以减少mongodb对字段的访问。

技巧七、AND型查询要点

假设要查询满足条件A,B和C的文档,满足A的文档有4万,满足B的有9K,满足C的是200,那么应该用C and B and A 这样只需要查询200条记录。
这就是说要是已知某个查询条件更加苛刻,那要将放置在最前面;

技巧八:OR型查询要点

OR型查询与AND查询恰好相反,匹配最多的查询语句放在最前面,因为Mongodb每次都要匹配不在结果集中的文档。








推荐阅读
  • 本文介绍了MongoDB中的覆盖索引查询(Covered Queries)的概念和使用方法。当查询的查询条件和查询计划中只包含索引属性时,MongoDB可以高效地执行查询操作,无需扫描documents或者将documents调入内存中。覆盖索引查询的条件是查询中的所有属性都是索引的一部分,并且查询结果中的属性值都在同一个索引中。通过使用覆盖索引查询,MongoDB可以直接从RAM中的索引中获取数据,比通过扫描文档读取数据要快得多。本文还提供了一个使用覆盖索引查询的示例。 ... [详细]
  • 在csv导入期间是否有合并文档的方法。我在Studio3T的导入csv中找不到合并选项 ... [详细]
  • nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 一、前言在数据库中,慢查询日志通常是用来进行优化数据库,MySQL中存在慢查询,Mongodb中也是如此。在Mongo中的慢查询属于Mon ... [详细]
  • Stringpattern".*"+"a?I'm"+".*";FindIterable<Doc ... [详细]
  • 1.淘宝模拟登录2.天猫商品数据爬虫3.爬取淘宝我已购买的宝贝数据4.每天不同时间段通过微信发消息提醒女友5.爬取5K分辨率超清唯美壁纸6.爬取豆瓣排行榜电影数据(含GUI界面版) ... [详细]
  • SeMITechnologies正在使用矢量搜索引擎Weaviate构建的内容。SeMI的首席执行官兼联合创始人BobvanLuijt说,它是一种独特的AI优先数据库,使用机器学习 ... [详细]
  • Abp+MongoDb改造默认的审计日志存储位置
    一、背景在实际项目的开发当中,使用AbpZero自带的审计日志功能写入效率比较低。其次审计日志数据量中后期十分庞大,不适合与业务数据存放在一起。所以我们可以重新实现A ... [详细]
  • 今天我们学习,数据库mongodb的使用,最下面有mongodb的下载链接。pipinstallpymongo首先安装pymongo,然后在需要用到的地方importpymongo ... [详细]
  • MongoDB学习:(二)MongoDB简单使用
    MongoDB学习:(二)MongoDB简单使用MongoDB使用:执行mongodb的操作之前,我们需要运行命令,来进入操作命令界面&amp;amp;gt;mongo提示 ... [详细]
  •     系统采用jeeplus框架(ssm+redis+shiro+mongodb+redis),默认是做了JSP未做前后端分离,由于业务需要已经多终端使用的需求(H5、小程序等) ... [详细]
  • mongoDB高可用集群环境搭建
    2019独角兽企业重金招聘Python工程师标准在生产环境下,部署一台mongodb服务的话,会存在以下问题:单点问题生产环境是一个 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了Mongodb副本集+分片集群搭建相关的知识,希望对你有一定的参考价值。环境需求: ... [详细]
  • 这是我的第一篇博客,多有不足请指教,话不多说,直入正题原因:由于mongodb数据量较大,占用空间较大,所以决定转移数据目录到另一块磁盘下一、查看磁盘占用情况[root@test~ ... [详细]
  • 前面刚有AWS开战MongoDB,双方“隔空互呛”,这厢又曝出2亿+简历信息泄露——MongoDB的这场开年似乎“充实”得过分了些。长期以来,作为“最受欢迎的NoSQL数据库”,M ... [详细]
author-avatar
东北的小爷们_366
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有