有一个拥有大量数据的JanusGraph数据库,其中包含大约6亿条边。
每一端都有"hash“和"timestamp”属性。
我想根据"hash“属性更新每条边上的"timestamp”属性。然而,更新的速度非常慢。
下面是我是如何为"hash“属性建立索引的:
hash = mgmt.makePropertyKey('hash').dataType(String.class).cardinality(SINGLE).make()
mgmt.buildIndex('HashComposite', Edge.class).addKey(hash).buildCompositeIndex()下面是我是如何更新"timestamp“属性的:
g.E().has('hash', 'c2719586fb6a26d492bf65a0263a1c52f5ff6ef3').property("timestamp", timestamp).next()事实上,我发现即使我不更新时间戳属性,而只是遍历边缘,速度仍然非常慢:
g.E().has('hash', 'c2719586fb6a26d492bf65a0263a1c52f5ff6ef3').next()当建立"hash“索引时,为什么遍历边缘的速度如此之慢?
发布于 2019-10-19 15:26:09
您可以对查询运行profile,以验证索引是否正在实际使用:
g.E().has('hash', hash).profile()您是在加载图形数据之前还是之后创建索引的?如果在此之后,您应该首先对数据重新编制索引:
mgmt.updateIndex(mgmt.getGraphIndex("HashComposite"), SchemaAction.REINDEX).get()https://stackoverflow.com/questions/58448430
复制相似问题