资讯专栏INFORMATION COLUMN

mongodb 存储

PAMPANG / 942人阅读

摘要:存储概念是分类的存储来是数据文件的大小。这个操作会禁止数据的访问,所以不能够轻易地执行。有两个明显的缺点。必须禁止访问数据库一段时间。需要同等的硬盘及。可以通过构建来防止空间占据过大。

mongodb 存储
db.stats() {  
  "db" : "exemplum",
  "collections" : 10,
  "objects" : 110857,
  "avgObjSize" : 239.9243349540399,
  "dataSize" : 26597292,
  "storageSize" : 43438080,
  "numExtents" : 25,
  "indexes" : 10,
  "indexSize" : 4210640,
  "fileSize" : 2666528768,
  "nsSizeMB" : 16,
  "dataFileVersion" : {
    "major" : 4,
    "minor" : 5
  },
  "extentFreeList" : {
    "num" : 47,
    "totalSize" : 2457366528
  },
  "ok" : 1
}
概念

storgaesize 是分类的存储来hold the doc 43438080 BYTE /1024/1024-- 41M
filesize 是数据文件的大小。2666528768 -- 2.48g

策略

收取的策略:是一旦分配了就不再回收,类似于“如果有人往里面放了1000亿条记录,那么还有可能再放入一次”。这个free space 被记录在extentFreeList,我们发现有2457366528 -- 2.28g,这就是我们大部分的filesize 的所在。

我们能对这个extentfreelist做什么呢? 跑一下db.repairDatabase() 是最好的方法。这个操作会禁止数据的访问,所以不能够轻易地执行。因为当执行的时候,会对每一个collection来执行compact命令,这个命令的作用是将collection重写到一个新的collection,重建索引,然后交换回来。

执行以下。

exemplum/19:13:10>db.stats() {  
  "db" : "exemplum",
  "collections" : 10,
  "objects" : 110857,
  "avgObjSize" : 239.9301442398766,
  "dataSize" : 26597936,
  "storageSize" : 41345024,
  "numExtents" : 24,
  "indexes" : 10,
  "indexSize" : 3589264,
  "fileSize" : 117440512,
  "nsSizeMB" : 16,
  "dataFileVersion" : {
    "major" : 4,
    "minor" : 5
  },
  "extentFreeList" : {
    "num" : 0,
    "totalSize" : 0
  },
  "ok" : 1
}
repairDatabase not working?

repairdatabase 有两个明显的缺点。

必须禁止访问数据库一段时间。如果是在线实例,很难接受。

需要同等的硬盘及2g plus。如果是因为磁盘慢了,清理磁盘则无法使用。

这里可以参考链接。提供了两种思路

使用compact。这里支持了原地来做,而不需要更多的空间。

通过path来做整个的repair。

Padding Power

padding 在2.6之前的设计是用padding factor, 计算公式是 storage size = record size * padding factor. 在2.6之后出现了另一种方式就是 power of 2 . 意思就是取2的倍数附近作为storage size。

最后。。。

可以通过构建capped collection 来防止空间占据过大。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/18801.html

相关文章

  • Mac下安装MongoDB 及使用教程

    摘要:浏览器下输入如果能正常显示数据库的信息,则表示启动成功。集合名可以是满足下列条件的条件集合名不能是空字符串。方法结果显示在一个格式化的方式,可以使用方法方法要限制中的记录,需要使用方法。命令的基本语法如下恢复数据恢复备份数据使用的命令。 概念 MongoDB 是一个跨平台的,面向文档的数据库,提供高性能,高可用性和可扩展性方便。 MongoDB 工作在收集和文件的概念。 什么是No...

    wenhai.he 评论0 收藏0
  • Mac下安装MongoDB 及使用教程

    摘要:浏览器下输入如果能正常显示数据库的信息,则表示启动成功。集合名可以是满足下列条件的条件集合名不能是空字符串。方法结果显示在一个格式化的方式,可以使用方法方法要限制中的记录,需要使用方法。命令的基本语法如下恢复数据恢复备份数据使用的命令。 概念 MongoDB 是一个跨平台的,面向文档的数据库,提供高性能,高可用性和可扩展性方便。 MongoDB 工作在收集和文件的概念。 什么是No...

    A Loity 评论0 收藏0
  • MongoDB 简单介绍以及安装

    摘要:介绍是一种数据库,它在数据存储的形态上和这类关系数据库有本质区别。存储的基本对象是,所以我们把它称为一种文档数据库,而文档的集合则组成了。 MongoDB 介绍 MongoDB 是一种 NoSQL 数据库,它在数据存储的形态上和 MySQL 这类关系数据库有本质区别。MongoDB 存储的基本对象是 Document,所以我们把它称为一种文档数据库,而文档的集合则组成了 Collect...

    tianyu 评论0 收藏0

发表评论

0条评论

PAMPANG

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<