首页 > 解决方案 > 更新的 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));

上述用例的平均时间是

  1. 存储库——4.5 秒,比 RDBMS 大。
  2. 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));

现在我可以看到时间上的巨大差异

  1. 存储库——10 秒,与 RDBMS 相比高。
  2. Mongo 模板 -- 30 秒,与上述情况相比非常高。

与 RDBMS 相比,NOsql 插入需要更多时间吗?它与集合结构有关吗?如何改进上述情况以获得高性能。我关注了 Mongo 官方网站的最新文档。

非常感谢任何帮助。

问候埃雷什

标签: mongodbspring-bootnosqldatabase-performance

解决方案


推荐阅读