你有没有遇到MongoDB数据库的性能问题?运行查询时常见的情况是突然出现性能问题。明显的第一个解决方案是“让我们创建一个索引!” 虽然这在某些情况下有效,但在尝试优化MongoDB时还需要考虑其他选项。

性能不是一个拥有昂贵磁盘和千兆网络的大型机器的问题。事实上,这些并不一定是取得良好表现的关键。

MongoDB的性能来自良好的概念,组织和数据分布。我们将列出一些有关良好MongoDB优化的最佳实践。这不是一个详尽的或完整的指南,因为有很多变数。但这是一个好的开始。

1.保持文件简单

MongoDB是一个无模式数据库。这意味着默认情况下没有预定义的模式。我们可以在新版本中添加预定义的模式,但不是强制性的。了解使用嵌入式文档和数组时遇到的困难,因为在应用程序端/ ETL过程中解析数据会变得非常复杂。此外,数组可能会影响复制性能:对于数组中的每个更改,所有数组值都将被复制!

在MMAPv1中,选择正确的字段名称非常重要,因为数据库需要保存每个文档的字段名称。它不像在关系数据库中保存架构。让我们想象一下 ,如果您有一百万个文档,那么称为lastmessagefrom传感器的字段会占用多少数据:大约28 MB仅用于保存此字段名称!十个字段的集合需要280MB(仅用于保存一个空文档)。

几乎达到这种文件大小的文件是不可取的,因为数据库将需要大量页面来处理单个文件。这需要更多的CPU周期来完成任何操作。

2.硬件很重要,但...

使用好几个处理器和大量内存的硬件肯定有助于提高性能。

WiredTiger利用多个处理器来提供良好的性能。该存储引擎具有每文档锁定算法,因此可以同时运行尽可能多的处理器和尽可能多的操作(存在票据限制,但这超出了本文的范围)。但是,MMAPv1存储引擎必须锁定每个集合,有时不能利用多个处理器进行写入。

但是当一个实例死亡时,在三台大型机器(32个CPU,128个RAM和2TB磁盘)的环境中会发生什么?答案是它会进行故障转移 - 而且驱动程序足够聪明,可以读取运行状况实例并编写新的主要实例。但是,你的表现不一样。

情况并非总是如此,但在分布式环境中使用多台中小型机器可确保中断只会影响碎片的几个部分,而应用程序很少或根本没有感知。但是与此同时,更多的机器意味着很有可能失败。在设计环境时考虑这种折衷。正确的选择会影响性能。

3.阅读首选项和writeConcern

读取首选项和writeConcern根据公司的要求而有所不同。但请记住,新的MongoDB版本(3.6)使用writeConcern:“多数”和readConcern:“主要”。

这意味着它必须承认至少在所有写入((N / 0.5)+1)的写入,其中N是副本集中实例的数量。这可能会很慢。然而,这对于速度的一致性来说是一个公平的权衡。

请确保您使用的是最适合您的阅读偏好,并在您的公司中撰写关注。驱动程序始终从主服务器读取,但如果它不是您的环境要求,请考虑将查询分发到其他实例中。如果不这样做,这些实例仅用于故障转移,并且不会在常规操作中使用。

4.工作集

工作组有多大?通常,应用程序不会使用所有数据。一些数据经常更新,而其他数据则不是。

你的工作数据集是否适合RAM?当所有工作数据集在RAM中时都会发挥最佳性能。女性的迟缓,如页面错误,可能会影响性能,这取决于您使用的是什么。

读取(如备份,ETL或基本报告)可能会严重影响性能,因为存在竞争将页面放入缓存中的情况。大报告或汇总也是如此。

拥有多个用于多种用途的集合并将特定机器用于特定目的(如使用区域来保存不再使用的文档)将有助于实现简单和预期的工作集。

4个优化MongoDB的技巧相关推荐

  1. Android开发——布局性能优化的一些技巧(一)

    0. 前言 上一篇我们分析了为什么LinearLayout会比RelativeLayout性能更高,意义在于分析了这两种布局的实现源码,算是对一个小结论的证明过程,但是对布局性能的优化效果,对这两种布 ...

  2. META的SEO优化中方法技巧

    Meta的SEO优化中方法技巧,Meta标签是用来描述网页属性的一种语言,标准的Meta标签可以便于搜索引擎排序,提高搜索引擎网站权重排名.要想网站做的更符合搜索引擎标准就必须了解meta标签,下面由 ...

  3. mysql 改表面_MySQL_解析MySQL数据库性能优化的六大技巧,数据库表表面上存在索引和防 - phpStudy...

    解析MySQL数据库性能优化的六大技巧 数据库表表面上存在索引和防错机制,然而一个简单的查询就会耗费很长时间.Web应用程序或许在开发环境中运行良好,但在产品环境中表现同样糟糕.如果你是个数据库管理员 ...

  4. 企业网络推广专员浅析企业网络推广中网站关键词排名优化有何技巧?

    自从企业网站上线运营之后,站长通过对企业网站自身定位规划的优化策略逐步展开优化进程,利用熟知的网站优化方法帮助企业网站快速获得搜索引擎收录,有了收录更能为用户呈现出企业网站优质的一面,获得良好排名助力 ...

  5. 网站图片优化的小技巧分享

    随着网站建设越来越多样化,网站的形式也逐渐随着用户的习惯在不断的变化,尤其是近来网站图文结合的形式给企业网站带来了更多的流量.但运用图文的方式也需要注重图片的优化才能更好的帮助网站赢取更多的推广效果, ...

  6. 网站关键词优化有哪些技巧?

    对于一般企业在做网站推广的时候对关键词的优化其实是非常重要的,并且对于网站关键词的排名提升也很慢,那么在网站关键词优化中有哪些技巧呢?下面就带大家一起来了解一下. 一.提升网站收录量 外部链接的数量和 ...

  7. 改善前端优化的有用技巧

    改善前端优化的有用技巧 1.缓存JavaScript和CSS样式 尽可能少地向服务器发出请求.记得10年前,一个页面上要加载5-6个JS,但理想情况下,你应该有一个JS文件和一个CSS文件,这就足够了 ...

  8. 15条最重要且最基本的SEO优化Tips和技巧

    无论是个人博客或网店还是企业网站,要想获得更好的网站流量SEO(Search engine optimization)是非常重要的一个网站建设工程.SEO优化其实没有什么秘密,要的只是合理利用技巧.并 ...

  9. OpenCV常见的优化方法和技巧总结

    OpenCV常见的优化方法和技巧总结 [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/78540206 目录 OpenCV常 ...

最新文章

  1. jquery 操作ajax 相关方法
  2. C# Http方式下载文件到本地类改进版
  3. java 下面的while语句退出时_java 下面的while语句退出时
  4. linux 卷文件满,LVM逻辑卷容量的增减
  5. Gerrit搭建与代码下载
  6. 从照相机到jpeg的流程中分析图像噪声
  7. 如何安装仿宋GB2312字体
  8. Linux 拷贝文件
  9. Android应用程序四大组件分别是什么?各个组件所起到的作用是什么?
  10. 用python算股票β系数_利用 Python 计算资产 beta 值和市场 beta 值
  11. 百度地图多点路线规划_期待已久的多地点路线规划功能
  12. python实现简易聊天室程序
  13. C语言abs函数与fabs函数,函数abs 和fabs
  14. 学习嵌入式的开发线路,新手怎么学习嵌入式?
  15. 前端怎么加粗字体_【推荐】皮卡丘怎么画?教你如何轻松绘画出可爱的宠物小精灵!...
  16. 雷电网络(一):厘清雷电网络的原理
  17. Linux内核中识别USB设备过程
  18. Python编程基础-函数
  19. 未来固码市场的可持续发展性
  20. keras中的early stopping

热门文章

  1. MOS管的主要参数与重要特性
  2. 德国汽车厂发生机器人杀人事件 人机协作是大势所趋
  3. 自动驾驶汽车定位技术
  4. 其中一个页签慢_渭南提升一个大专学历的有效方法
  5. 电脑显示器变色_电脑维修(看完后就可以开一家自己的电脑维修店!)
  6. Windows 10下,anaconda (conda) 虚拟环境的创建,jupyter notebook如何使用虚拟环境
  7. 实验二简化版C语言中文理解程序文法
  8. 洛谷P1198 [JSOI2008]最大数
  9. 封装cookie.js、EventUtil.js、
  10. 浅述WinForm多线程编程与Control.Invoke的应用