0
我想模擬使用mongo 1.8.0的mongo寫入鎖,但無法看到正確的預期結果。模擬Mongo寫鎖定來衡量性能
我在同一臺服務器上的兩個不同dbs中創建兩個mongo集合。我創建了一個DBObjects數組,並將它們插入到兩個集合中。批量插入使用兩個線程同時觸發。我也跟蹤DBCollection.insert(DBObject arr,WriteConcern.SAFE)被調用之前和之後的時間。
儘管使用了不同的對象大小和數組大小,但我總是發現插入兩個數據庫的時間有點接近。我希望一個線程先寫入阻塞另一個線程,從而導致兩個線程之間的時間差別很大。有什麼我在這裏失蹤?
class BenchTest {
public static void main() {
Mongo m = new Mongo(host,port);
DBCollection coll1 = m.getDB("db0").getColl("coll0");
DBCollection coll2 = m.getDB("db1").getColl("coll0");
Thread t1 = new WriteThread();
t1.setCollection(coll1);
Thread t2 = new WriteThread();
t2.setCollection(coll2);
t1.run();
t2.run();
}
}
class WriteThread extends Thread {
DBCollection coll;
public void setCollection (DBCollection coll) {
this.coll = coll;
}
long startTime = System.currentTimeMillis();
coll.insert((DBObject1, DBObject2, …, DBObjectn), WriteConcern.SAFE);
long endTime = System.currentTimeMillis();
System.out.println ("Time taken = "+(endTime-startTime));
}