mongo 重命名集合如何工作?
How does mongo rename collection works?
我对 mongo 如何重命名集合以及重命名一个非常大的集合需要多少时间感到困惑。
场景如下,我有一个 mongo 集合,其中包含太多数据(5.88 亿个文档),这会减慢查找和插入速度,因此我创建了一个存档集合来保存所有这些数据。
为此,我正在考虑将旧集合重命名为 oldcollectionname_archive 并从一个名为 oldcollectionname 的新集合开始。
并计划通过以下命令执行此操作:
db.oldCollectionName.renameCollection("oldCollectionName_archive")
但我不确定,这需要多少时间。
我阅读了 mongo 文档和许多关于集合重命名的 Whosebug 答案,但我可以在任何地方找到关于集合大小是否影响重命名集合所需时间的任何数据。
如果有人对此有任何了解或任何相同的经历,请提供帮助。
注意:我已经阅读了 mongo 文档和其他 SO 答案中重命名期间可能发生的其他问题。
我已经重命名了包含大约 5 亿文档的多个集合。它在 ~0 时间内完成。
MongoDB 3.2 和 3.4 也是如此,我猜旧版本也是如此。
来自 mongodb 文档 (https://docs.mongodb.com/manual/reference/command/renameCollection/)
renameCollection 具有不同的性能影响,具体取决于目标命名空间。
如果目标数据库与源数据库相同,renameCollection 只是更改名称空间。 这是一个快速操作。
如果目标数据库与源数据库不同,renameCollection 会将所有文档从源集合复制到目标集合。根据集合的大小,这可能需要更长的时间才能完成。其他需要独占访问受影响数据库的操作将被阻止,直到重命名完成。请参阅一些常见的客户端操作采用了哪些锁?对于需要独占访问所有数据库的操作。
注意:
* renameCollection 与分片集合不兼容。
* 如果目标是现有集合的名称并且您未指定 dropTarget: true,则 renameCollection 失败。
我对 mongo 如何重命名集合以及重命名一个非常大的集合需要多少时间感到困惑。
场景如下,我有一个 mongo 集合,其中包含太多数据(5.88 亿个文档),这会减慢查找和插入速度,因此我创建了一个存档集合来保存所有这些数据。 为此,我正在考虑将旧集合重命名为 oldcollectionname_archive 并从一个名为 oldcollectionname 的新集合开始。 并计划通过以下命令执行此操作:
db.oldCollectionName.renameCollection("oldCollectionName_archive")
但我不确定,这需要多少时间。 我阅读了 mongo 文档和许多关于集合重命名的 Whosebug 答案,但我可以在任何地方找到关于集合大小是否影响重命名集合所需时间的任何数据。
如果有人对此有任何了解或任何相同的经历,请提供帮助。
注意:我已经阅读了 mongo 文档和其他 SO 答案中重命名期间可能发生的其他问题。
我已经重命名了包含大约 5 亿文档的多个集合。它在 ~0 时间内完成。 MongoDB 3.2 和 3.4 也是如此,我猜旧版本也是如此。
来自 mongodb 文档 (https://docs.mongodb.com/manual/reference/command/renameCollection/)
renameCollection 具有不同的性能影响,具体取决于目标命名空间。
如果目标数据库与源数据库相同,renameCollection 只是更改名称空间。 这是一个快速操作。
如果目标数据库与源数据库不同,renameCollection 会将所有文档从源集合复制到目标集合。根据集合的大小,这可能需要更长的时间才能完成。其他需要独占访问受影响数据库的操作将被阻止,直到重命名完成。请参阅一些常见的客户端操作采用了哪些锁?对于需要独占访问所有数据库的操作。
注意: * renameCollection 与分片集合不兼容。 * 如果目标是现有集合的名称并且您未指定 dropTarget: true,则 renameCollection 失败。