【发布时间】:2015-09-20 11:14:42
【问题描述】:
我正在尝试在 Spring 应用程序(没有 Spring 数据)上实现高插入/秒吞吐量。我尝试使用以下代码插入一百万个文档:
Address address = new Address();
address.setStreet1("");
address.setStreet2("");
address.setZipCode("");
address.setId(1234);
StopWatch stopWatch = new StopWatch();
stopWatch.start();
IntStream.iterate(0, i -> i++).limit(1000000).parallel().
forEach(i -> addressRepository.insert(address);
stopWatch.stop();
以及仓库代码如下:
public void insert(Address address) {
Document address = new Document("_id", address.getId()).
append("zip_code", address.getZipCode).
append("street_1", address.getStreet1()).
append("street_2", address.getStreet2());
db.getCollection("address").insertOne(address, (Void result, Throwable t)
-> System.out.println("Inserted"));
}
我可以收集的最大写入次数约为 4k/秒。有没有办法以多线程的方式做到这一点,以获得更高的每秒写入量?
我的 MongoClient 的 Spring bean 配置是:
@Bean
public MongoClient mongoClient() {
return MongoClients.create("mongodb://localhost");
}
【问题讨论】:
标签: java multithreading spring performance mongodb