对JanusGraph的Gremling控制台查询随机缓慢

对JanusGraph的Gremling控制台查询随机缓慢,gremlin,janusgraph,Gremlin,Janusgraph,我有一个超级简单的gremlin查询,通过gremlin控制台将其发送到IBM云托管JanusGraph。奇怪的是,执行时间有时非常快,然后又非常慢。那会是什么?属性uid是字符串类型,可以是GUID,也可以是其他类型 gremlin> g.V().has('uid', 'f287342c-ff84-4102-8f18-f3aa759470a7').hasLabel('product').profile() ==>Traversal Metrics Step

我有一个超级简单的gremlin查询,通过gremlin控制台将其发送到IBM云托管JanusGraph。奇怪的是,执行时间有时非常快,然后又非常慢。那会是什么?属性
uid
是字符串类型,可以是GUID,也可以是其他类型

gremlin> g.V().has('uid', 'f287342c-ff84-4102-8f18-f3aa759470a7').hasLabel('product').profile()
==>Traversal Metrics
Step                                                               Count  Traversers       Time (ms)    % Dur
=============================================================================================================
JanusGraphStep([],[uid.eq(f287342c-ff84-4102-8f...                     1           1        1107.212   100.00
    \_condition=(uid = f287342c-ff84-4102-8f18-f3aa759470a7 AND ~label = product)
    \_isFitted=false
    \_query=[]
    \_orders=[]
    \_isOrdered=true
  optimization                                                                                 0.014
  optimization                                                                                 0.055
  scan                                                                                         0.000
    \_condition=VERTEX
    \_query=[]
    \_fullscan=true
                                            >TOTAL                     -           -        1107.212        -
gremlin> g.V().has('uid', 'f287342c-ff84-4102-8f18-f3aa759470a7').hasLabel('product').profile()
==>Traversal Metrics
Step                                                               Count  Traversers       Time (ms)    % Dur
=============================================================================================================
JanusGraphStep([],[uid.eq(f287342c-ff84-4102-8f...                     1           1         129.861   100.00
    \_condition=(uid = f287342c-ff84-4102-8f18-f3aa759470a7 AND ~label = product)
    \_isFitted=false
    \_query=[]
    \_orders=[]
    \_isOrdered=true
  optimization                                                                                 0.014
  optimization                                                                                 0.056
  scan                                                                                         0.000
    \_condition=VERTEX
    \_query=[]
    \_fullscan=true
                                            >TOTAL                     -           -         129.861        -
gremlin> g.V().has('uid', 'f287342c-ff84-4102-8f18-f3aa759470a7').hasLabel('product').profile()
==>Traversal Metrics
Step                                                               Count  Traversers       Time (ms)    % Dur
=============================================================================================================
JanusGraphStep([],[uid.eq(f287342c-ff84-4102-8f...                     1           1        2581.514   100.00
    \_condition=(uid = f287342c-ff84-4102-8f18-f3aa759470a7 AND ~label = product)
    \_isFitted=false
    \_query=[]
    \_orders=[]
    \_isOrdered=true
  optimization                                                                                 0.024
  optimization                                                                                 0.094
  scan                                                                                         0.000
    \_condition=VERTEX
    \_query=[]
    \_fullscan=true
                                            >TOTAL                     -           -        2581.514

我通过向属性
uid
添加索引找到了解决方案。我以为JanusGraph会自动完成,但事实并非如此。在JanusGraph gramlin控制台上使用以下步骤

gremlin> graph = ConfiguredGraphFactory.open('g')
gremlin> mgmt = graph.openManagement()
gremlin> uidKey = mgmt.getPropertyKey('uid')
gremlin> mgmt.buildIndex('uidIndex', Vertex.class).addKey(uidKey ).buildCompositeIndex()
gremlin> mgmt.commit()

这是JanusGraph的改编。

请注意,配置文件输出提供了一条线索,因为它显示了
fullscan=true
@提示,非常感谢!