2

所以我正在测试一些极端的写入,10 个单独的插入......简单的 for 循环(让我们暂时保持主题简单)......我已经为集合打开了“等待同步”(在这种情况下,我们调用返回时需要 100% 提交)... 2 台机器... 我在运行实际单元测试的主机上运行循环,编写 10k 需要 3 分钟...如果我写到我的远程机器(相同的 arangoDB 设置),它需要 9 秒......是因为它也在运行单元测试而在我的本地机器上花费更长时间的原因吗?还是由于 arangoDB 常见问题解答警告的驱动器的 SYNC/MSYNC 问题?

“从持久性的角度来看,立即同步当然更好,但这意味着为每个操作执行额外的系统调用。在具有慢同步/msync 的系统上,”

在驱动器或系统上是否有设置或任何要检查的东西来确定我的设备同步/msync 的值是多少?

谢谢您的帮助!!

4

1 回答 1

0

首先实际速度很大程度上取决于你的硬盘。

例如,对于 MacOSX 下带有 SSD 的笔记本,我得到:

arangod> t = time(); for (i = 0;  i < 1000;  i++) db.unsync.save({ name: "Hallo " + i }); time() - t;
0.03408193588256836
arangod> t = time(); for (i = 0;  i < 1000;  i++) db.sync.save({ name: "Hallo " + i }); time() - t;
6.904788970947266

因此,编写 1000 个文档的速度提高了 200 倍。

对于 Linux 下带有硬盘的桌面,我得到:

arangod> t = time(); for (i = 0;  i < 1000;  i++) db.unsync.save({ name: "Hallo " + i }); time() - t;
0.08486199378967285
arangod> t = time(); for (i = 0;  i < 1000;  i++) db.unsync.save({ name: "Hallo " + i }); time() - t;
54.90065908432007

在这里情况更糟。超过 600 倍。

关于本地和远程之间的区别:这听起来很奇怪。你如何访问远程机器?你用阿兰戈什吗?

于 2014-04-15T09:27:27.453 回答