以最小的性能影响升级 mongo 2dsphere 索引版本的最佳策略

best strategy to upgrade mongo 2dsphere index version with minimum performance impact

我们最近从 mongo 3.0 升级到 3.2 该应用程序大量使用仍为 2.0 版的 2dsphere 索引。 我们想将此 2dshpere 索引版本升级到 3.0 以利用它带来的性能优势。

但是需要完成此操作的集合有 超过 1000 万个节点 并且该应用程序是一个流量很大的应用程序,我们不能承受长期的影响。

我们应该采取什么策略来完成这项工作,同时对实时流量查询的性能影响最小。

建议的解决方案:

1) Create new 2dshpere index in background with version 3.0
2) After above is done, remove old 2dsphere index

请建议相同或以上的最佳解决方案是针对此用例的最佳解决方案。

我发布了我自己的答案,因为我们使用的方法对我们来说效果很好。 如果有更好的答案,我很乐意听到。

我们首先在后台创建了版本 3 索引。这样两个索引都是并行的。

 db.goibibocms_nodes.createIndex({"fieldname":"2dsphere","background":1,"version":3},{"2dsphereIndexVersion":3})

然后我们删除了版本 2 索引。

 db.goibibocms_nodes_v2.dropIndex("old index name")

当这些索引创建和删除发生时,它运行良好,没有任何性能下降。