Mongotemplate 批量更新耗时测试

date
Nov 13, 2023
slug
Mongotemplate_batch_update_time-consuming_test
status
Published
tags
知识分享
Java
MongoDB
NoSQL
summary
type
Post
category

背景

MongoDB 中有十二万条 Person 数据,需要将每个人的 Salary 增加 1000。
由于测试过程数据修改耗时实在太久,在具体的某些代码中改为修改一万条数据。

mongoTemplate#upsert

使用 MongoTemplate#upsert, query 每个 name 再 update salary。(数据量大的话极不推荐)
一万条耗时: 35155ms

BulkOperations

BulkOperations可以进行批量操作

updateOne

一万条耗时: 28337ms

updateMulti

一百条耗时: 5831ms

查找修改并删除原 Collection 插入到新 Collection

先匹配再修改都很耗时,可以考虑取个巧,将数据从 MongoDB 中取出后使用 Java Stream 处理数据,再删去旧 Collection 插入新 Collection。
十二万条数据耗时: 1409ms

正经方法

如果全表都要改的话,不用删除再新建 Collection,直接在 update 中使用 incr 即可
十二万条数据耗时: 1400ms
 
 
 
 

© Rysi 2018 - 2025