mongo 1.8.0 を使用して mongo 書き込みロックをシミュレートしようとしていますが、期待される正しい結果が表示されません。
同じサーバー上の 2 つの異なるデータベースに 2 つの mongo コレクションを作成します。DBObject の配列を作成し、両方のコレクションに挿入します。バッチ挿入は、2 つのスレッドを使用して同時にトリガーされます。また、DBCollection.insert(DBObject arr, WriteConcern.SAFE) が呼び出される前後の時間を追跡します。
さまざまなオブジェクト サイズと配列サイズを使用しているにもかかわらず、両方の DB に挿入するのにかかる時間は、やや近いことがわかります。1 つのスレッドが最初に書き込み、もう 1 つのスレッドをブロックするため、両方のスレッド間で所要時間が大幅に異なることが予想されます。ここに欠けているものはありますか?
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));
}