MongoDB固定集合最大可存储文档数计算方式咨询
MongoDB固定集合最大存储文档数计算详解
嘿,这个问题问到点子上了,我来帮你拆解清楚~
首先得先搞懂stats()返回里两个关键字段的区别:
size:这是你插入的那条文档实际的有效数据大小,这里是55字节,也就是单条文档真实的内容占用空间。storageSize:这是MongoDB存储引擎(比如WiredTiger)为这条文档实际分配的存储空间。MongoDB是按固定大小的存储块来分配空间的,这里的16384字节(也就是16KB)就是一个块的大小——哪怕你的文档只有几十字节,也会占用一整个块的空间,不会和其他文档共享一个块。
接下来重点:你设置的maxSize(512MB)限制的是整个固定集合能使用的总存储空间(也就是所有文档的storageSize总和),而不是文档实际数据的总大小。
所以正确的计算方式应该是用总限制大小除以单条文档占用的存储块大小:
512000000 / 16384 = 31250
也就是说最多能存31250条文档。
那为什么不能用512000000 / 55呢?因为MongoDB的存储机制不允许把多个小文档塞进同一个存储块里,每个文档至少会占用一个完整的块。哪怕你的文档只有1字节,总空间是16KB,你也只能存1条,而不是16384条——这就是存储块分配机制的影响。
内容的提问来源于stack exchange,提问作者IsaacLevon
相关产品推荐
相关产品推荐

