mongodb - MongoDB - _id 索引大小的奇怪差异
问题描述
我在 12 个分片上有两个分片集合,文档数量相同。Collection1 的 shard key 是复合的(使用了两个字段),它的文档由 4 个字段组成。Collection2 2 的 shard key 是单一的,它的文档由 5 个字段组成。
通过db.collection.stats() 命令,我获得了有关索引的信息。我觉得奇怪的是,对于 Collection1,_id索引的总大小为 1342MB。相反,Collection2 的_id索引的总大小为 2224MB。这种差异合理吗?由于文档数量相同,我一直在等待总大小会更小。请注意,两个集合的分片键不集成_id字段。
解决方案
MongoDB 对索引使用前缀压缩。
这意味着如果索引中的连续值以相同的字节序列开始,则为第一个值存储字节,随后的值包含一个指示前缀长度的标记。
根据 _id 值的数据类型,这可能是相当多的。
也可能存在孤立文档导致一个节点在其 _id 索引中有更多条目。
推荐阅读
- git - git fetch 只进入指定的目标分支
- kotlin - RxJava UndeliverableException如何处理onSuccess消费者异常?
- join - Snowsql 加入或强制转换问题
- javascript - 在反应js中隐藏和显示元素(按列排序)
- python - 使用 Pandas 的列中相似外观数据的平均值
- swift - SwiftUI 在父视图中更新源时如何防止 NavigationLink 弹出?
- excel - 自动将 Excel 中的值填充到 Confluence 时间线中
- c - OpenMP 的 VSCode 自动完成功能
- google-chrome - 如何在不属于您的站点上的浏览器中处理 WebSocket?
- oracle - Oracle Text - 索引文档,其中每个文档都有多种语言突变