java - Orientdb 在插入重复检查时性能非常慢
问题描述
我正在使用 REST API 向 OrientDB 发送一批 SQL 命令。每批包含大约 6000 个顶点和 13200 条边。我正在使用 csv 创建顶点和边,1 批是通过解析 csv 中的 100 行生成的所有查询。我在插入之前检查重复项,如下所示:
顶点
UPDATE vertex SET property1 = "property1", property2 = "property2" UPSERT WHERE property1 = "property1";
边缘(使用此方法,因为边缘不支持 UPSERT)
LET $1 = SELECT expand(bothE("edge1")) FROM vertex1 WHERE property1 = "property1";
LET $2 = SELECT expand(bothE("edge1")) FROM vertex2 WHERE property1 = "property1";
LET $3 = SELECT INTERSECT($1, $2);
IF($3.INTERSECT.size() == 0) {
LET $4 = CREATE EDGE edge1 FROM (SELECT FROM vertex1 WHERE property1 = "property1") TO (SELECT FROM vertex2 WHERE property1 = "property1");
第一批大约需要 50 秒,第二批大约需要 250 秒,第三批需要 1000 多秒。我怀疑在以前的记录中搜索重复记录是它减慢速度的原因,但是它的数据量如此之少,我怀疑我的重复检查或服务器配置是罪魁祸首。
有没有更好的方法来检查重复项?我已经更新了我的服务器配置以使用以下内容:
storage.diskCache.bufferSize = 40GB
query.parallelMinimumRecords = 1
storage.useWAL = false
任何建议表示赞赏
解决方案
推荐阅读
- javascript - 是否有相当于 React 的 componentDidUpdate 的 javascript 事件监听器?
- python - 如何使用 Python 在 GTK-3 中显示比例或 vscale
- java - 使用 Junit 5 Selenium 并行执行的失败测试的屏幕截图
- neo4j - neo4j - 从平面数据创建图形投影
- java - UPPAAL:Java API 的 ModelDemo(获取内存信息时出错:34,javax.xml.stream.XMLStreamException:ParseError at [row,col]:[1,3])
- rust - 参考“静态”的寿命不够长?
- javascript - 将 typingStart 定义到特定频道的问题
- clang - 如何以 clang 格式使用 --dry-run 选项?
- html - 试图阅读 HTML 以从我的经纪人那里找到 XRP 的价格
- python - 按下按钮后,使用 Flask 打印 HTML 中的文本框文本