我正在使用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
任何建议表示赞赏