对JanusGraph的Gremling控制台查询随机缓慢
我有一个超级简单的gremlin查询,通过gremlin控制台将其发送到IBM云托管JanusGraph。奇怪的是,执行时间有时非常快,然后又非常慢。那会是什么?属性对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
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
@提示,非常感谢!