【问题标题】:Mongo - manually (re)set padding factorMongo - 手动(重新)设置填充因子
【发布时间】:2015-04-07 22:49:29
【问题描述】:

我有一堆数据需要播种到 mongo 集合中。在高层次上,目标是将每个元素放入父文档中,并定期更新数据库(这是一个长时间运行的过程,我想创建保存点以防脚本出错)。伪代码如下:

for element in dataset :
    {
        "akey" : adoc
        ...
    }[element["key"]]["elements"].append(element)

    if(periodically())
        print(status())
        db.sums.update({"name":"akey"},adoc)
        ...

当我运行 db.sums.stats() 时,我的 paddingFactor 接近 4.0,因为 mongo 认为我的文档有增长的习惯。这很不幸,因为从现在开始我只会添加大型但静态的文档。我现在可以运行 compact,但这不会改变集合的填充因子。我可以等待填充因子重新收敛到 1,但我必须记住稍后运行紧凑。那么现在有什么方法可以(重新)设置填充因子吗?

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    您可以在 MongoDB 2.2+ 中指定一个可选的 paddingFactorcompact() 一起使用:

    paddingFactor:可选。仅适用于 MMAPv1 存储引擎。指定在压缩操作期间要使用的填充(作为文档大小的一个因素)。在压缩完成后,paddingFactor 不会影响后续记录分配的填充。

    【讨论】:

    • 我在我的问题中解决了这个问题 - 我问的是如何更改后续记录分配的 paddingFactor。
    • @xavier 您建议 paddingFactor 不会随 compact() 改变(确实如此)。但是,如果您要明确设置 paddingFactor ,则没有方法可以做到这一点。不要认为这值得投反对票;-)
    • 但这就是我的问题的标题。如果您编辑您的答案以说明这是不可能的(也许从设计的角度描述原因),我会取消投票给您。
    猜你喜欢
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多