我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MongoDB优化心得分享

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MongoDB优化心得分享

这里总结下这段时间使用mongo的心得,列出了几个需要注意的地方。

1. 系统参数及mongo参数设置

mongo参数主要是storageEngine和directoryperdb,这两个参数一开始不选定后续就无法再更改。

directoryperdb主要是将数据库分文件夹存放,方便后续的备份及数据迁移。

storageEngine(存储引擎)默认使用的是MMAPv1,推荐使用3.0新加入的引擎wiredTiger。经实际使用wiredTiger占用的磁盘空间是MMAP的1/5,索引大小是其1/2,查询速度也提高很多,更重要的是该引擎提供了document级别的锁,当集合插入或更新数据时不需要阻塞读操作了。唯一的问题是市面上支持该引擎查询的工具不多,MongoVUE无法查到该引擎存储的集合,NosqlManager-mongo可以查到但需要.net环境支持。个人觉得熟悉下mongo command用mongo shell就足够了,所以还是强烈推荐使用wiredTiger引擎。

2. 无需对集合进行水平切分

由于之前一直使用关系型数据库,关系型数据库当单表数据量超大时经常使用的一直方法是对数据表进行分表。在使用mongo时便很自然的觉得这招仍然有用。由于该系统的分表都是动态生成的,做到后面发现这招对mongo带来的性能提升远远抵不过维护成本的增加。

分析一下关系型数据库分表会提高性能的最大原因是很多关系型数据库一张表是一个文件,分表可以避免一个文件过大所造成数据提取速度变慢。但是mongo并不是这样存储的,所以这条并不成立了。

用过的都知道mongo对索引的依赖非常大,如果集合不能一开始就设计好,那后续索引就得写脚本来创建。这里贡献个给mongo大表动态创建索引的脚本:


eval(function () {
  var infos = [];
  var collNames = db.getCollectionNames();
  for (var i = 0; i < collNames.length; i++) {
    var collName = collNames[i];
    var collSize = db.getCollection(collName).count();
    if (collSize > 1000000 && collName.indexOf("info_")==0) {
     db.getCollection(collName).ensureIndex({publishDate:-1,blendedScore:-1,publishTime:-1,isRubbish:1},{name:"ScoreSortIdx",background:true});
      db.getCollection(collName).ensureIndex({similarNum:-1,publishTime:-1,isRubbish:1},{name:"HotSortIdx",background:true});
      db.getCollection(collName).ensureIndex({publishTime:-1,isRubbish:1},{name:"TimeSortIdx",background:true});
      infos.push("name:" + collName + "索引创建成功");
    }
  }
  return infos;
}());

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MongoDB优化心得分享

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

android AudioRecorder简单心得分享

1.如何创建一个有效的AudioRecorder实例 Android各种设备的采样频率不同,输入的声道数也不同,如果采用固定的采样频率和声道数,那么得到的AudioRecorder不一定能够正常初始化。为了正常使用,需要尝试各种不同的参数,
2022-06-06

WordPress数据备份心得分享

服务器钱用光了要关了或者是服务器想要搬家,需要备份各种数据。 今天简单的备份了一下在服务器上面wordpress各种文件和资源。 wordpress的数据主要分两个部分,一个是文字部分的;一个是附件部分,比如图片,音频,视频等。 文字都被写
2022-06-12

分享Android中pullToRefresh的使用心得

pullToRefresh的导入首先,点击new按钮 -> import Module 然后在 New Module界面选择已经在本地的含有源代码的pullToRefresh。打开如下图所示的open Module Settings 按钮
2022-06-06

如何激活Win8.1 RTM心得分享

还记得去年只要98元和248元的Win8 key么?它俩都是微软促销Win8时的福利,现在可以再次立功了,拿来激活Win8.1吧。Win8.1 RTM泄露了,下载安装了,那么激活呢?别忘了祭出你向微软购买的Win8 Key。因为Win8.1
2022-06-04

动易CMS系统优化心得

关键字描述:动易cms 优化 心得 动易 分享 Meta优化 内容页用动易CMS系统用了好几年了,总结了几个常用的优化方法,供大家分享:   一、关闭动易的编程客栈访问统计模块,现在有很多免费的访问统计,且这个非常占用资源不说,动易自己做的
2022-06-12

Android编程心得分享——JSON学习过程

让我说说Android编程心得,在我们初步学习JSON时我们都知道JSON作为现在比较流行的数据交换格式,有着它的许多优点,Android的WEB应用中更是广泛用到了它,这里将我学习JSON的过程记录如下 在Android的Android.
2022-06-06

基于Mybaits映射的一点心得(分享)

以前一直使用Hibernate,基本上没用过Mybatis,工作中需要做映射关系,简单的了解下Mybatis的映射。两者相差不多都支持一对一,一对多,多对多,本章简单介绍一对一的使用以及注意点。建表语句:CREATE TABLE `bloc
2023-05-30

win7系统时钟使用技巧心得分享

Windows 7的一大特色便是引入了“超级任务栏”,除了各种炫目的Aero特效外,一个很明显的改进就是尺寸增大了(应该说“宽度”更精确)。正是有了这个“物质基础”,才
2023-05-30

如何优化SQL语句的心得浅谈

我们要做到不但会写SQL,还要做到写出性能优良的SQL语句
2022-11-15

Win7下如何正常安装使用AutoCAD2006心得分享

对于Windows7系统下AUTOCAD2006无法正常安装的问题,特别整理出心得体会分享给大家,当然,使用AutoCAD 2010的朋友们可以略过了。解决方法有两个javascript。  方法一:  1、启用Administrator帐
2023-06-01

MySQL索引优化分享

2,explain的作⽤ 查看表的读取顺序,读取操作类型,有哪些索引可用,表之间关联,每张表中有哪些索引被优化器执⾏3,索引命中策略略分析    最左匹配原则 在索引字段上加入函数(不匹配索引)    is null/is not null/not in(不匹
MySQL索引优化分享
2016-09-28

技术分享 | MySQL 优化:JOIN 优化实践

近期刚好学习了丁奇老师的《MySQL 实战 45 讲》中的 join 优化相关知识,又刚刚好碰上了一个非常切合的 join 查询需要优化,分析过程有些曲折,记录下来留作笔记。问题 SQL 描述问题 SQL 和执行计划是这样的:explain SELECT
技术分享 | MySQL 优化:JOIN 优化实践
2015-01-09

windows 8.1灵活丰富的分屏视图功能体验心得分享

在去年10月发布的Windows 8操作系统中,我们已经体验了微软为宽屏设备用户提供的“分屏视图(Snap Views)”功能,可以将两个需要常在视线内的应用同时并排放在Win8屏幕上便于查看。同时,Windows传
2022-06-04

从小白到大神:Go语言项目开发心得分享

从小白到大神:Go语言项目开发心得分享近年来,Go语言因其简洁高效的特性越来越受到开发者的喜爱。作为一门开源的编程语言,Go具有并发能力强、静态类型检查、内存管理自动化等优点,受到了众多大型互联网公司的青睐。作为一名从零开始学习Go的小白开
从小白到大神:Go语言项目开发心得分享
2023-11-02

win2003系统硬盘如何保持稳定使用心得分享

众所周知,win2003系统是一个很稳定的系统,这样一个稳定的系统在硬盘这个环节上也不能掉链子,硬盘的稳定总体影响着系统的稳定,因此让硬盘更快,让系统更稳定,总结有九个环节,下面就逐一道来。 一、合理使用硬盘 何为合理使用硬盘呢?首先我们要
2023-05-30

编程热搜

目录