mongodb - 更新的 MongoDB Bulk 操作性能很慢
问题描述
我是 Mongo 的新手。我在玩 Spring Boot MongoRepositories 和 MongoTemplate。为此,我做了一些示例应用程序。请在此处从 GIT 存储库中找到代码
对于这个用例,我插入了 5000 个随机生成的数据并插入到我的 Mongo Local 实例中。我测试了使用 repository.saveAll() 插入数据和 Mongo Template 的批量更新
Document document = new Document();
generateUserDetailsDocument(details, document);
documents.add(new InsertOneModel<>(document));
上述用例的平均时间是
- 存储库——4.5 秒,比 RDBMS 大。
- MongoTemplate -- 3.5 秒,与 RDBMS 相比较大。
现在我尝试使用更新数据,在这种情况下,我加载了前 5000 条记录,并为每条记录更新了一个属性值并尝试重复相同的过程。
存储库——saveAll()。和 Mongo 模板
Document document = new Document();
generateUserDetailsDocument(details, document);
UpdateOptions updateOptions = new UpdateOptions();
updateOptions.upsert(true);
documents.add(new ReplaceOneModel<>(new Document("_id", details.getId()), document));
userDetailsMongoCollection.bulkWrite(documents, new BulkWriteOptions().ordered(false));
现在我可以看到时间上的巨大差异
- 存储库——10 秒,与 RDBMS 相比高。
- Mongo 模板 -- 30 秒,与上述情况相比非常高。
与 RDBMS 相比,NOsql 插入需要更多时间吗?它与集合结构有关吗?如何改进上述情况以获得高性能。我关注了 Mongo 官方网站的最新文档。
非常感谢任何帮助。
问候埃雷什