我想将数据存储在MonogoDB上。因此,我有一个mongos,三个配置服务器和一个由两个replicasets组成的分片集(每个都有prim./sec./arbiter)。
我有两个问题
1)衡量存储所有数据所需时间的最佳方法是什么?
现在我通过mongos执行“time mongo 141.100.55.72:25001/mydb-quiet/data/javascript/insert.js”(insert.js是稍后描述的javascript)
我想测量多个操作 - 什么是将每个输出存储在一个文件中的好方法(在ubuntu服务器上工作)
2)测量的时间确实很慢 - 例如:执行需要大约5分钟。 100.000 dataobjects ..
如何加快效果?
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
}
此外,我不确定如何检查数据是否同时存在于两个副本中 - 检查该数据的最佳方式是什么?
最好的问候
答案 0 :(得分:1)
通过运行time mongo
,您需要在进程中添加大量额外时间来打开,建立连接并完成整个脚本。
那你想要什么?或每个插入复制/存储在分片中所需的金额?
如果要在shell中运行脚本:
function measure_time() {
...
}
> var d = new Date(); measure_time(); print('it took', Math.abs(d-new Date().getTime()).toString(), 'ms');
衡量需要多长时间。