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