0

MonogoDBにデータを保存したい。したがって、1つのmongo、3つのconfigserver、および2つのレプリカセット(それぞれがprim./sec./arbiterを持つ)で構成されるシャーディングセットがあります。

私は2つの問題があります

1)すべてのデータを保存するために必要な時間を測定するための最良の方法は何ですか?

今では、mongosを介して「timemongo 141.100.55.72:25001 / mydb --quiet /data/javascript/insert.js」を実行しています(insert.jsは後で説明するjavascriptです)

複数の操作を測定したい-各出力をファイルに保存するための良い方法は何ですか(ubuntuサーバーで動作しています)

2)測定時間は本当に遅いです-例:実行には約5分かかります。100.000データオブジェクトの場合。

どうすればパフォーマンスを高速化できますか?

javascriptは次のようになります:(私はtestdataを作成しています;シャーディングキーはテストのためだけの反復です(key:x)-それはパフォーマンスの低下を引き起こす可能性がありますか?)

var amount = 100000/4;
var x=1;
var doc= "";

for (i=0; i<amount; i++)
{
doc = { datetime: '1119528044', att2: '...', key: x,...} //14 attributes
db.mycol.insert(doc);
x=x + 1
}

for (i=0; i<amount; i++)
{
doc = { datetime: '1219268044', att2: '...', key: x,...} //14 attributes
db.mycol.insert(doc);
x=x + 1
}

for (i=0; i<amount; i++)
{

doc ={ datetime: '1355851700', att2: '...', key: x,...} //14 attributes
db.mycol.insert(doc);
x=x + 1

}


for (i=0; i<amount; i++)
{ 
doc = { datetime: '1444851704', att2: '...' key: x,...} //14 attributes
db.mycol.insert(doc);
x=x + 1
}

さらに、データが両方のレプリカセットにあるかどうかを確認する方法がわかりません-それを確認するための最良の方法は何でしょうか?

よろしくお願いします

4

1 に答える 1

1

実行time mongoすることにより、スクリプト全体を開き、接続を確立し、終了するプロセスに多くの時間を追加することになります。

それはあなたが測定しようとしていることですか?または、すべての挿入が複製/シャードに保存されるのに必要な量ですか?

シェル内でスクリプトを実行する場合:

function measure_time() {
 ...
}
> var d = new Date(); measure_time(); print('it took', Math.abs(d-new Date().getTime()).toString(), 'ms');

そして、それがかかる時間を測定します。

于 2012-11-12T15:29:04.357 に答える