gpt4 book ai didi

php - MongoDB:架构迁移、更新或插入

转载 作者:可可西里 更新时间:2023-11-01 10:44:03 24 4
gpt4 key购买 nike

虽然 MongoDB 不需要任何固定的架构,但有时我们希望从一种结构迁移到另一种结构。

我最近在处理一个小数据集(~200K),并决定循环现有数据、转换数据模型并插入到新集合中。事实证明我们的 vps 不是那么强大,使用 php 驱动程序我只能达到大约 ~300 次插入/秒,在确保以下内容之后:

  • 插入前没有索引。
  • 尽可能使用批量插入。

我想知道我是否只是选择了错误的迁移路径,或者在处理 MongoDB 中的架构更改时是否有一些最佳实践?


在采纳了一些建议后,我在迁移过程中将 write concern 更改为 0,这是我观察到的:

  • 插入速度仍然没有预期的那么快,最高约为 500 次插入/秒
  • 插入完成后,索引会很快完成,这可能是因为 ensureIndexw=0 即发即弃?
  • 剩余的更新需要一段时间才能开始,可能是因为索引操作被阻塞了?然后它似乎以不同的速度运行(之前它一直运行得较慢),再次可能正在进行索引。
  • CPU 和 IO 都很好。 cpu 大多有 90% 左右空闲,IO 等待不到 10%。

除了不使用我们的 PHP ORM 进行迁移,是否还有更多优化的可能性?

最佳答案

向 php 客户端传输和序列化所有内容可能会增加很多开销。从 shell 运行迁移将是最快的。用 update 写它们或使用光标 forEach迭代并调用 save .

查看使用游标的示例 MongoDB update multiple records of array (朝向底部)。

注意 snapshot游标问题。如果集合未分片,可能需要幂等更新或使用快照。

关于php - MongoDB:架构迁移、更新或插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20889026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com