gpt4 book ai didi

java - OrientDB慢插入

转载 作者:太空宇宙 更新时间:2023-11-04 13:59:09 25 4
gpt4 key购买 nike

我需要将大约 50 亿个顶点加载到 OrientDB 中。

OrientDB 文档声称每个集群可以容纳超过 90 亿个顶点,一天最多可以插入 100 亿个文档。然而,我现在已经运行了几天,并且只创建了很小的数据子集。

我的模型非常简单...

Person
-> Name STRING
-> Score DECIMAL

1.

我让 OrientDB oetl 工具保持运行,它在一周内插入了 5 亿条记录。记录仍在以每秒约 100 行的速度加载(非常缓慢)。开始时速度约为每秒 1500 个节点,但逐渐减慢。目前估计建议需要几个月的时间来加载所有数据(!)

2.

同时我编写了一个单独的java应用程序来测试批量插入

final OrientGraphFactory factory = new OrientGraphFactory("plocal:C:/orientdb/databases/test", "X", "X");
factory.declareIntent(new OIntentMassiveInsert());

OrientGraphNoTx graph = factory.getNoTx();

for (int i= 0; i < NUM_INSERTLOOPS; i++)
{
OrientVertex v = graph.addVertex("person", "12");
v.setProperty("Name", "test" + i);
v.setProperty("Score", 100 * i);
}

graph.commit();

一开始也很好,100k 个节点大约需要 8 秒,但在 1000 万个左右之后,这似乎突然慢到超过 5 分钟。我在 24 小时和 5000 万个节点后停止了它。

我正在一台规范良好的 Windows 计算机上运行本地数据库。运行任一进程时,CPU 使用率约为 1%。 oetl 使用大约 15B 的 20GB RAM,java 程序要少得多。

这是预期的表现还是我误解了什么。我很高兴等待几天来加载我的数据,但不会等待几周(/月!!)

最佳答案

对于 NoTx 中的 java 导入器进行优化,您可以使用带有内联属性的 addVertex,如下所示。

OrientVertex v = graph.addVertex("class:person", "Name","test" + i,"Score", 100 * i);

这只会调用一次保存。

提高速度的下一步是使用多线程

关于java - OrientDB慢插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29488241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com