【问题标题】:Write heavy dml-operations in MongoDB在 MongoDB 中编写繁重的 dml 操作
【发布时间】:2013-01-06 02:29:36
【问题描述】:

我在 Linux 上运行 MongoDB (2.2),我有几个问题。

我的架构包含许多字段 + 子字段和该字段的一个索引。

  1. 在索引上完成更新/删除的速度有多快 - 我每秒大约有 3 次更新/删除等。
  2. 是否有规则,例如在 10,000 次更新后您必须压缩或重建索引?
  3. 字段中的更改是否在索引中立即可见?如果没有,此更新/删除是否有延迟或临时表?

提前致谢 - 布兰登

【问题讨论】:

  • 是的,索引与数据同步更新。没有延迟。
  • 索引会立即更新,但是当您删除 mongodb 中的数据时,如果您不执行 db.repair() 命令,则释放的数据将不会释放到操作系统请注意:@ 987654321@
  • 如果将索引发送到后台,它们可能会延迟。发布的数据将被发送到一个 $deletedlist 桶中,每个桶代表已删除文档的可能大小。当插入或更新一个新文档并且它需要移动时,MongoDB 将搜索大约 30 个(或类似的)这些存储桶,以判断是否适合新的记录大小。使用持续增长的文档可能会导致使用此方法产生碎片,但是您可以在文档上使用 2 种尺寸的填充来降低移动的风险。

标签: performance mongodb indexing dml


【解决方案1】:
  1. 在插入/更新/删除时更新索引。关于性能,最好的答案就是对其进行测试。
  2. 我不知道。如果您需要定期进行压缩或修复,您也应该进行复制(但如果资源允许,您可以在同一主机上进行复制)
  3. 是的(嗯,在同一个数据库连接上 - 在其他数据库连接上可能需要更多时间。但如果您遇到这个问题,我不是回答您的合适人选;)

话虽如此,我强烈建议您查看http://www.10gen.com/presentations 的一些演示文稿 - 很抱歉我无法指出特别有趣和有用的那些,我建议您浏览并选择那些你觉得很有趣的。

请注意,MongoDB 做事的方式非常不同,并且有很多陷阱供未做好准备的人使用。然而,一旦你知道如何使用它,它就是一个很棒的数据库。

【讨论】:

    猜你喜欢
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 2015-12-20
    • 2020-07-17
    • 2019-11-05
    • 2013-02-25
    相关资源
    最近更新 更多