阅读更多

最近trunk.ly的工程师通过mongostat发现了大量的page fault,然后通过检查发现,他们的索引已经超出内存限制了(没有keep all index in RAM)。于是他们决定开始减小索引大小,通过测试得出了如下的数据,不同的数据类型的索引大小有2到3掊的差距。

虽然能够想像得到,但是直观的数据图可能让我们更深刻的认识到。他们的测试再一次告诉我们:给索引定一个好的数据结构是多么重要。

这是测试结果图,分别是用int、MongoDB的ObjectID、base64和md5的字符串做索引产生的索引大小:

测试过程也非常简单,首先用下面脚本将各种不同数据结构的数据写入到不同的collection里:

#!/usr/bin/env python

import pymongo
import bson
from pymongo import Connection

db = connection.test_database

print('ObjectID')
for i in range(1, 1000000):
    db.objectids.insert({'i': i})

print('int')
for i in range(1, 1000000):
    db.ints.insert({'_id': i, 'i': i})

print('Base64 BSON')
for i in range(1, 1000000):
    db.base64s.insert({'_id': \
        bson.Binary(hashlib.md5(str(i)).digest(),
        bson.binary.MD5_SUBTYPE), 'i': i})

print('string')
for i in range(1, 1000000):
    db.strings.insert({'_id': hashlib.md5(str(i)).digest(), 'i': i})

然后获取每个collection的index大小,得到如下的结果,画成上面的图:

> db.base64s.stats()
{
        "totalIndexSize" : 67076096,
}
> db.objectids.stats()
{
        "totalIndexSize" : 41598976,
}
> db.ints.stats()
{
        "totalIndexSize" : 32522240,
}
> db.strings.stats()
{
        "totalIndexSize" : 90914816,

}

原文链接:How to save 200% RAM by selecting the right key data type for #MongoDB



相关推荐

  • 3. MongoDB存储和索引

    ​ MongoDB 从 3.0 开始引入可插拔存储引擎的概念。目前主要有。,其采用 linux 操作系统内存映射技 术,但一直饱受诟病;...相比 MV1 存储索引时,更节省对内存空间的损耗;提供压缩算法,可以大大降低对硬盘资源的消耗,

  • MongoDB组合索引的优化

    Davis带来的MongoDB上索引的优化方法以及MongoDB索引的选择机制,帮助大家缩小索引的选择空间。 A. Jesse Jiryu Davis —— 10gen工程师,从事MongoDB、Python及Tornado。在Dzone上分享了Mon

  • 记某核心MongoDB集群索引优化实践

    腾讯云数据库MongoDB天然支持高可用、分布式、高性能、高压缩、schema free、完善的客户端访问均衡策略等功能。云上某重点用户基于MongoDB这些优势,选用MongoDB作为主存储服务,该用户业务场景如下: ·存储电商...

  • MongoDB (五) 索引机制

    如果所有需要的字段都在索引中,不需要额外的字段,就可以不再需要从数据页加载数据,这就是查询覆盖。 db.human.createIndex({firstName: 1, lastName: 1, gender: 1, age: 1}) IXSCAN/COLLSCAN 索引扫描/集合...

  • mysql索引优化种类_MySQL索引类型,优化,使用数据结构

    工欲善其事必先利其器半藏说道:“若你在路途中遇到上帝,上帝也会被割伤。”一、mysql 索引分类(默认使用B树结构)在数据库表中,对字段建立索引...1、普通型索引这是最基本的索引类型,而且它没有唯一性之类的限...

  • MongoDB单值索引、复合索引、数组索引、地理空间索引、唯一索引、TTL索引、条件索引、稀疏索引、文本索引、模糊索引

    索引主要表现为一种目录式的数据结构,用来实现快速数据查询。索引是对数据库表(集合)中的某些字段进行抽取、排列后,形成一种非常易于遍历读取的数据集合。使用WiredTiger存储引擎: B+ 结构注意在 3.0.0 版本前...

  • MongoDB索引优化详解

    索引基础知识 什么是索引 索引最常用的比喻就是书籍的目录,查询索引就像查询一本书的目录。...假设我们有如下文档(每行的数据在MongoDB中是存在于一个Document当中) 姓名 id 部门 city score

  • mongodb索引使用

    在MongoDB建立索引能提高查询效率,只需要扫描索引只存储的这个集合的一小部分,并只把这小部分加载到内存中,效率大大的提高,如果没有建立索引,在查询时,MongoDB必须执行全表扫描,在数据量大时,效率差别就很...

  • 千亿级Mysql数据迁移mongodb成本节省及性能优化实践

    400亿该业务迁移mongodb后,同样的数据节省了极大的内存、CPU、磁盘成本,同时完美解决了容量痛点、数据不均衡痛点,并且实现了一定的性能提升。此外,迁移时候的mysql数据为400亿,3个月后的现在对应mongodb集群...

  • MongoDB 索引管理

    索引是数据库中离不开的话题,其作用是提高数据的获取性能。与关系型数据库一样,MongoDB 同样可以利用...MongoDB 默认索引数据结构也是 B+Tree 与关系型数据库的索引相似。本篇文章将介绍 MongoDB 中的索引与维护。

  • 10gen工程师谈MongoDB组合索引的优化

    A. Jesse Jiryu Davis —— 10gen...并通过explain()输出的结果来验证实际性能,同时还分析了MongoDB的查询优化器的索引选择机制。 项目背景 预想中的项目是在MongoDB上建立一个类Disqus的评论系统(虽然Disqu

  • mongodb详细优化策略方案

    – 系统优化 – 索引设计 – 备份监控 – 模式设计 – 程序配置 一、安全措施 1.1 为MongoDB集群启用认证鉴权 MongoDB服务器在默认安装下不启用鉴权。这意味着每个人都可以直接连接到mongod实例并执行任意数据库操作...

  • mongodb索引 操作符

    唯一索引数据结构更加便于查找 e.g. 对name创建唯一索引,name值不能有重复 db.class1.ensureIndex({name:1},{unique:true}) * 当对某个域创建唯一索引,该域就不能再插入重复数据 稀疏索引 只针对有...

  • 【MongoDB】索引属性 之 TTL索引(过期自动删除)

    MongoDB可使用TTL索引在一定时间后或在定时时间之后自动从集合中删除数据

  • ASP.NET某中学图书馆系统的设计与实现(源代码+论文).zip

    ASP.NET是一种基于.NET框架的服务器端编程模型,用于构建高性能、易于维护的Web应用程序。在这个中学图书馆系统的案例中,开发者利用ASP.NET的技术栈设计并实现了这样一个功能丰富的平台,旨在为中学生、教师以及图书馆管理员提供方便的信息管理和检索服务。下面我们将深入探讨这个系统的核心知识点。 1. **ASP.NET架构**:ASP.NET提供了多种开发模式,如Web Forms、MVC、Web API和Blazor。本系统可能采用了Web Forms或MVC架构,这两种模式都支持事件驱动和模型-视图-控制器(MVC)设计原则,便于创建动态网页和处理用户交互。 2. **数据库设计**:图书馆系统通常需要管理书籍信息、借阅记录、用户账户等数据,因此数据库设计是关键。可能使用了SQL Server或MySQL等关系型数据库,通过ADO.NET或Entity Framework进行数据访问,实现CRUD(创建、读取、更新、删除)操作。 3. **身份验证与授权**:为了确保系统安全,。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。

  • 图书管理系统(基于ASP .NET)

    《图书管理系统(基于ASP .NET)》是一款专为学习者设计的应用程序,旨在提供一个全面的图书管理平台。系统的设计采用ASP .NET技术,这是一款由微软开发的用于构建动态网站、web应用和web服务的强大工具。ASP .NET框架以其高效、安全和易于维护的特点,深受开发者的喜爱。 该系统包含了多个核心模块,这些模块覆盖了图书管理的主要功能。有图书录入模块,它允许管理员录入图书的基本信息,如书名、作者、出版社、ISBN号、分类等。图书查询模块提供给用户方便快捷的搜索功能,用户可以根据书名、作者、关键词等条件进行检索。此外,借阅与归还模块确保图书的流通管理,记录图书的借阅状态,提醒用户按时归还,并处理超期罚款等事务。 系统还具备用户管理模块,允许用户注册、登录、修改个人信息。对于权限管理,后台有专门的管理员角色,他们可以对用户进行操作,如分配权限、冻结或解冻账户。同时,系统的统计分析模块能够生成各类报表,如图书借阅量、热门书籍、用户活跃度等,这些数据对于图书馆运营决策有着重要参考价值。 在。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。

  • 思维导图制作-会计初级知识重难点-会计务实-会计基础

    本专刊的主要目的是帮助初学者系统化和结构化地掌握会计知识。我们采用思维导图的形式,将复杂的会计概念和流程进行有效的简化,旨在让学习者能够更清晰地理解这些内容,并增强记忆效果。通过视觉化的方式,读者不仅能够感受到会计知识的关联性,还能轻松掌握关键点,提升学习效率。无论是在学习新知识还是复习旧知识时,这种方法都能够为学习者提供极大的便利和帮助。

  • 精选毕设项目-todolist,带简易后端.zip

    精选毕设项目-todolist,带简易后端

  • 精选毕设项目-美食菜谱.zip

    精选毕设项目-美食菜谱

Global site tag (gtag.js) - Google Analytics