mongo 1.8.0을 사용하여 mongo 쓰기 잠금을 시뮬레이트하려하지만 올바른 예상 결과를 볼 수 없습니다.시뮬레이션 몽고 쓰기 잠금 성능 측정
동일한 서버에서 두 개의 서로 다른 DB에 mongo 모음을 두 개 만듭니다. DBObject 배열을 만들어 두 컬렉션에 삽입합니다. 배치 삽입은 두 개의 스레드를 사용하여 동시에 트리거됩니다. 또한 DBCollection.insert (DBObject arr, WriteConcern.SAFE)가 호출되기 전후의 시간을 추적합니다.
다양한 객체 크기와 배열 크기를 사용 했음에도 불구하고 항상 두 DB에 삽입하는 데 걸린 시간이 어느 정도 가까운 것으로 나타났습니다. 한 스레드가 먼저 다른 스레드를 블로킹하여 두 스레드간에 상당히 다른 시간이 소요될 것으로 예상합니다. 내가 여기서 누락 된 것이 있습니까?
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));
}