2012-11-08 17 views
0

我想將數據存儲在一個MonogoDB。因此,我有一個mongos,三個配置服務器和一個由兩個副本組成的分片集(每個副本包含prim./sec./arbiter)。MongoDB的 - 在一個分片存儲數據集和測量時間

我有兩個問題

1)請告訴我測量所需要存儲所有數據的時間的最佳方法是什麼?

現在我執行 「時間蒙戈141.100.55.72:25001/mydb --quiet /data/javascript/insert.js」 通過mongos(insert.js晚descriped的JavaScript)

我想測量多個操作 - 最新的好方法存儲在文件中的每個輸出(Ubuntu的服務器上工作)

2)所測得的時間確實很慢-eg:執行需要大約5分鐘。 100.000數據對象..

我怎樣才能加速性能?

的JavaScript看起來像這樣:(我創建TESTDATA;分片的關鍵是隻是爲了測試(密鑰的迭代: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 
} 

而且我m不確定如何檢查數據是否在兩個副本上 - 檢查該數據的最佳方法是什麼?

問候

回答

1

通過運行time mongo要添加很多額外的時間與進程打開,建立連接,並完成整個劇本。

難道這就是你想MESURE?或者每個插入片段被複制/存儲在碎片中所花費的金額?

如果你想運行shell裏面的腳本:

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

它需要多長時間措施。

+0

你好,是的,我想衡量它需要爲所有插入的量。例如。我插入100000個文檔 - 所有100000個文檔的時間。 – Tyzak

相關問題