ArangoDB在现有1 milltion文档上为嵌套级别创建父级到子级边不工作/或速度慢

vaj7vani  于 2022-12-09  发布在  Go
关注(0)|答案(1)|浏览(137)

在ArangoDB中创建了events文档。加载了100万条记录,如下所示,在40秒内完成。

FOR I IN 1..1000000
INSERT {
    "source": "ABC",
    "target": "ABC",
    "type": "REST",
    "attributes" : { "MyAtrib" : TO_STRING(I)},
    "mynum" : I
} INTO events

因此,记录1是超级父项,2是1的子项,等等1 --> 2 --> 3 --> 4 --> ...1000000
创建了空的Edge集合ChildEvents,并尝试通过下面的查询建立父子Edge关系,但始终没有完成(在mynum上创建了哈希索引,但没有成功)

FOR p IN events
   FOR c IN events
        FILTER p.mynum == ( c.mynum + 1 )
            INSERT { _from: p._id, _to: c._id}  INTO ChildEvents

如有任何帮助,我们将不胜感激。

x6492ojm

x6492ojm1#

在我的系统上创建事件文档大约花了50秒,我在events集合中添加了一个mynum的索引,然后运行第二个查询(最后添加了一个RETURN NEW),处理边缘大约花了70秒(加上渲染边缘子集的时间):

我使用的是ArangoDB 3.6.0,在Windows 10下使用RocksDB引擎,英特尔i7- 6700 K 4x4.0 GHz,32 GB内存,三星Evo 850固态硬盘。
您确定索引设定正确吗?请解释查询并检查执行计划,您可能觉得有些不同?

Execution plan:
 Id   NodeType                     Est.   Comment
  1   SingletonNode                   1   * ROOT
  3   EnumerateCollectionNode   1000000     - FOR c IN events   /* full collection scan, projections: `mynum`, `_id` */
  9   IndexNode                 1000000       - FOR p IN events   /* persistent index scan, projections: `_id` */
  6   CalculationNode           1000000         - LET #5 = { "_from" : p.`_id`, "_to" : c.`_id` }   /* simple expression */   /* collections used: p : events, c : events */
  7   InsertNode                1000000         - INSERT #5 IN ChildEvents 
  8   ReturnNode                1000000         - RETURN $NEW

Indexes used:
 By   Name                      Type         Collection   Unique   Sparse   Selectivity   Fields        Ranges
  9   idx_1655926293788622848   persistent   events       true     false       100.00 %   [ `mynum` ]   (p.`mynum` == (c.`mynum` + 1))

Optimization rules applied:
 Id   RuleName
  1   move-calculations-up
  2   move-filters-up
  3   interchange-adjacent-enumerations
  4   move-calculations-up-2
  5   move-filters-up-2
  6   remove-data-modification-out-variables
  7   use-indexes
  8   remove-filter-covered-by-index
  9   remove-unnecessary-calculations-2
 10   reduce-extraction-to-projection

相关问题