8000 Algorithmics Graph travsersal ArangoDB with FILTER too slowly · Issue #20481 · arangodb/arangodb · GitHub
[go: up one dir, main page]

Skip to content
Algorithmics Graph travsersal ArangoDB with FILTER too slowly #20481
Closed
@son2408

Description

@son2408

My Environment

  • ArangoDB Version: 3.12.0-NIGHTLY.20231219
  • Deployment Mode: Single Server
  • Deployment Strategy: Manual Start
  • Infrastructure: own
  • Operating System: Windows 10
  • Total RAM in your machine: 32Gb
  • Disks in use: SSD

Component, Query & Data

Affected feature: AQL query using web interface
AQL query (if applicable):

for v,e, path in 0..1 outbound 'nodes/2' edges
  filter e._to == 'nodes/td_0'
return v._key

AQL explain and/or profile (if applicable):

Query String (91 chars, cacheable: false):
 for v,e, path in 0..1 outbound 'nodes/2' edges
   filter e._to == 'nodes/td_0'
 return v._key

Execution plan:
 Id   NodeType          Calls   Par   Items   Filtered   Runtime [s]   Comment
  1   SingletonNode         1     -       1          0       0.00002   * ROOT
  2   TraversalNode         1     0       1    1004010       3.59838     - FOR v  /* vertex (projections: `_key`) */, e  /* edge (projections: `_from`, `_to`) */ IN 0..1  /* min..maxPathDepth */ OUTBOUND 'nodes/2' /* startnode */  edges /* order: dfs */
  5   CalculationNode       1     0       1          0       0.00001       - LET #5 = v.`_key`   /* attribute expression */
  6   ReturnNode            1     -       1          0       0.00000       - RETURN #5

Indexes used:
 By   Name   Type   Collection   Unique   Sparse   Cache   Selectivity   Fields        Stored values   Ranges
  2   edge   edge   edges        false    false    false        0.00 %   [ `_from` ]   [  ]            base OUTBOUND

Traversals on graphs:
 Id  Depth  Vertex collections  Edge collections  Options                                              Filter / Prune Conditions
 2   0..1                       edges             uniqueVertices: none, uniqueEdges: path, order: dfs  FILTER (e.`_to` == "nodes/td_0")

Optimization rules applied:
 Id   Rule Name                                  Id   Rule Name                                  Id   Rule Name                         
  1   move-calculations-up                        4   move-filters-up-2                           7   remove-unnecessary-calculations-2 
  2   move-filters-up                             5   optimize-traversals                         8   async-prefetch                    
  3   move-calculations-up-2                      6   remove-filter-covered-by-traversal

Query Statistics:
 Writes Exec      Writes Ign      Doc. Lookups      Scan Full      Scan Index      Cache Hits/Misses      Filtered      Peak Mem [b]      Exec Time [s]
           0               0                 0              0         1004011                  1 / 0       1004010         108134400            3.59872

Query Profile:
 Query Stage                Duration [s]         Query Stage                Duration [s]         Query Stage                Duration [s]
 initializing                    0.00000         loading collections             0.00001         instantiating executors         0.00008
 parsing                         0.00004         instantiating plan              0.00003         executing                       3.59842
 optimizing ast                  0.00000         optimizing plan                 0.00014         finalizing                      0.00002

Problem:
Collection edges contains 1 millions. I graph from a node to 1millions edges with filter field _to == "nodes/td_0". It's only a result, but it takes 3.5s. I think Algorithmics graph and filter of Arango not good by field _to indexed but it works too slowly. Solr work it only 105ms.
Expected result: Can you explain to me why Arango work too slowly ?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0