我有一个非常简单的测试程序,它使用ACKNOWLEDGED批量插入比使用UNACKNOWLEDGED. 而且它不仅仅是快了一点 - 我看到了将近 100 倍!
我对这两种写关注之间的区别的理解仅仅是ACKNOWLEDGED客户端等待服务器确认操作已执行(但不一定持久),而UNACKNOWLEDGED客户端只知道请求已发送到金属丝。因此,前者实际上可以以更高的速度执行似乎很荒谬,但这就是我所看到的。
我在 64 位 Windows 7 上使用 Java 驱动程序 (v2.12.0) 和 Oracle 的 Java JDK v1.7.0_71 和 mongo 版本 3.0.0。我正在运行 mongod,完全开箱即用(新鲜安装),没有分片或任何东西。在每次测试之前,我确保集合为空并且没有非默认索引。
如果您能深入了解为什么我总是看到与我期望的相反的东西,我将不胜感激。
谢谢。
这是我的代码:
package test;
import com.mongodb.BasicDBObject;
import com.mongodb.BulkWriteOperation;
import com.mongodb.BulkWriteResult;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
import com.mongodb.ServerAddress;
import com.mongodb.WriteConcern;
import java.util.Arrays;
public class Test {
private static final int BATCHES = 100;
private static final int BATCH_SIZE = 1000;
private static final int …Run Code Online (Sandbox Code Playgroud)