是否有任何工具可以估算MongoDB中的索引大小?

jpr*_*ham 9 indexing b-tree mongodb

我正在寻找一种工具,可以根据以下几个信号对MongoDB索引的大小进行合理估计:

  • 我的收藏中有多少文件
  • 索引字段的大小
  • 如果不是ObjectId,我正在使用_id的大小
  • 地理/非地理

有没有人偶然发现这样的事情?我可以想象,一旦Mongo的性能下降,一旦它撞到内存墙并且文档开始被分页到磁盘,这将是非常有用的.如果我有一个正常运行的数据库并且想要添加另一个索引,那么我唯一能够知道它是否太大的方法就是实际添加它.

它不需要精确到位,但是对于B-Trees和索引实现的一些假设,我确信它可能足够合理有用.

如果这不存在,我想建立并开源它,所以如果我错过了这个计算所需的任何参数,请在你的答案中包含.

Tyl*_*ock 21

我刚刚与一些10gen工程师交谈,但没有工具,但你可以做一个基于这个公式的包络计算:

2*[n*(18字节开销+索引字段的平均大小+转换软件因子的5个左右字节)]

其中n是您拥有的文件数量.

开销和转换填充是mongo特定的,但是2x来自b树数据结构,大约是半满(但是在最坏的情况下已经分配了完整树所需的100%的空间).

我会解释更多,但我现在正在自己学习.本演示文稿将提供更多详细信息:http://www.10gen.com/presentations/mongosp-2011/mongodb-internals

  • 他可以创建一个在线计算器:-) (3认同)