iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MongoDB优化心得分享
  • 882
分享到

MongoDB优化心得分享

2024-04-02 19:04:59 882人浏览 八月长安
摘要

这里总结下这段时间使用monGo的心得,列出了几个需要注意的地方。 1. 系统参数及mongo参数设置 mongo参数主要是storageEngine和directoryperdb,这两个参数一开始不选定后

这里总结下这段时间使用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;
}());

您可能感兴趣的文档:

--结束END--

本文标题: MongoDB优化心得分享

本文链接: https://www.lsjlt.com/news/51996.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • MongoDB优化心得分享
    这里总结下这段时间使用mongo的心得,列出了几个需要注意的地方。 1. 系统参数及mongo参数设置 mongo参数主要是storageEngine和directoryperdb,这两个参数一开始不选定后...
    99+
    2024-04-02
  • pycharm debug 断点调试心得分享
    记得自己学习的心得,为了自己以后调试方便些。 1.操作步骤: 1.1 添加断点 直接在标记处点击鼠标左键即可。(删除断点只需再点击断点处即可) 1.2 Debug下运行代码 如图所...
    99+
    2024-04-02
  • 基于Mybaits映射的一点心得(分享)
    以前一直使用Hibernate,基本上没用过Mybatis,工作中需要做映射关系,简单的了解下Mybatis的映射。两者相差不多都支持一对一,一对多,多对多,本章简单介绍一对一的使用以及注意点。建表语句:CREATE TABLE `bloc...
    99+
    2023-05-30
    mybatis 映射
  • win7系统时钟使用技巧心得分享
    Windows 7的一大特色便是引入了“超级任务栏”,除了各种炫目的Aero特效外,一个很明显的改进就是尺寸增大了(应该说“宽度”更精确)。正是有了这个“物质基...
    99+
    2023-05-30
    win7 时钟 使用 技巧 系统
  • 如何优化SQL语句的心得浅谈
    (1)选择最有效率的表名顺序(只在基于规则的优化器中有效):Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving tab...
    99+
    2022-11-15
    优化 SQL语句
  • MySQL事务的基础学习以及心得分享
    这篇文章主要介绍了MySQL事务的基础学习以及心得分享,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。事务是逻辑上的一组操作,组成这组操作的各...
    99+
    2024-04-02
  • Win7下如何正常安装使用AutoCAD2006心得分享
    对于Windows7系统下AUTOCAD2006无法正常安装的问题,特别整理出心得体会分享给大家,当然,使用AutoCAD 2010的朋友们可以略过了。解决方法有两个。  方法一:  1、启用Administrator帐...
    99+
    2023-06-01
    win7安装autocad AutoCAD2006 Win7 心得
  • SQL优化中SQLT的使用心得是怎样的
    这篇文章给大家介绍SQL优化中SQLT的使用心得是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、SQLT背景介绍SQLTXPLAIN(简称SQLT)是ORACLE  ...
    99+
    2024-04-02
  • PyCharm激活攻略分享:让你的编程更得心应手
    PyCharm激活攻略分享:让你的编程更得心应手 对于许多Python开发者来说,PyCharm是一款常用的集成开发环境(IDE),提供了强大的功能,方便编写、调试和管理Python代...
    99+
    2024-02-22
    编程 pycharm 激活
  • 从小白到大神:Go语言项目开发心得分享
    从小白到大神:Go语言项目开发心得分享近年来,Go语言因其简洁高效的特性越来越受到开发者的喜爱。作为一门开源的编程语言,Go具有并发能力强、静态类型检查、内存管理自动化等优点,受到了众多大型互联网公司的青睐。作为一名从零开始学习Go的小白开...
    99+
    2023-11-02
    Go语言 小白 大神
  • win2003系统硬盘如何保持稳定使用心得分享
    众所周知,win2003系统是一个很稳定的系统,这样一个稳定的系统在硬盘这个环节上也不能掉链子,硬盘的稳定总体影响着系统的稳定,因此让硬盘更快,让系统更稳定,总结有九个环节,下面就逐一道来。 一、合理使用硬盘 何为合理使...
    99+
    2023-05-30
    win2003 系统硬盘 系统 心得 硬盘
  • 学习Python的笔记该如何整理?分享你的心得。
    Python是一门高效、易学、易用的编程语言,越来越多的人选择学习它。在学习Python的过程中,难免会遇到大量的知识点和代码,如何将这些知识点和代码整理好,成为我们需要面对的一个问题。在本文中,我将分享我自己在学习Python时,整理笔...
    99+
    2023-08-29
    path 二维码 学习笔记
  • Golang编译优化技巧分享
    Golang编译优化技巧分享 为了提高Golang程序的性能和效率,优化编译过程是至关重要的。本文将分享一些Golang编译的优化技巧,并提供具体的代码示例供读者参考。 一、使用编译...
    99+
    2024-03-07
    技巧 golang 编译优化
  • MongoDb优化指南
    1、为什么选择MongoDB? 1、性能 在大数据时代中,大数据量的处理已经成了考量一个数据库最重要的原因之一。而MongoDB的一个主要目标就是尽可能的让数据库保持卓越的性能,这很大程度地决定了Mongo...
    99+
    2024-04-02
  • Java 程序员必备!LeetCode 刷题笔记和学习心得分享
    作为一名 Java 程序员,想要提高自己的编码能力,刷 LeetCode 绝对是不可或缺的。LeetCode 是一个在线的编程刷题平台,拥有大量的算法题目,可以帮助程序员提升自己的编程能力和算法思维。 在这篇文章中,我将分享我的 Leet...
    99+
    2023-08-30
    leetcode 学习笔记 同步
  • 优化SQL语句的技巧分享
    这篇文章给大家介绍优化SQL语句的技巧分享,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。建立索引不是建的越多越好,原则是:第一:一个表的索引不是越多越好,也没有一个具体的数字,根据以往...
    99+
    2024-04-02
  • Discuz论坛SEO优化技巧分享
    Discuz论坛一直以来是国内最受欢迎的论坛软件之一,它功能强大、灵活性高,而且支持SEO优化,有助于提高论坛的搜索引擎可见性和流量。本文将分享一些Discuz论坛SEO优化的技巧,包...
    99+
    2024-03-12
    seo 优化 discuz
  • Linux上MySQL的优化方法分享
    本篇内容主要讲解“Linux上MySQL的优化方法分享”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux上MySQL的优化方法分享”吧!现在MySQL运行的大部分环境都是在Linux上的,...
    99+
    2023-06-16
  • Golang函数方法优化技巧分享
    Golang函数方法优化技巧分享 Golang作为一种快速、高效的编程语言,拥有许多强大的特性和优化方法,能够帮助开发者编写性能高效的程序。在Golang中,函数是非常重要的一部分,优...
    99+
    2024-03-12
    函数 优化 golang 内存占用
  • PHP查询语句优化技巧分享
    标题:PHP查询语句优化技巧分享 在开发Web应用程序时,优化数据库查询是至关重要的环节,它能够显著提升应用程序的性能和响应速度。在PHP中,通过优化查询语句可以有效地减少数据库负担,...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作