[英]Updating the properties of many edges in JanusGraph(gremlin) is very slow
有一个JanusGraph数据库,数据量很大,大约有6亿条边。
每一面都有属性“hash”和“timestamp”。
我想根据“哈希”属性更新每个边缘的“时间戳”属性。 但是,更新速度非常慢。
以下是我如何为“哈希”属性建立索引:
hash = mgmt.makePropertyKey('hash').dataType(String.class).cardinality(SINGLE).make()
mgmt.buildIndex('HashComposite', Edge.class).addKey(hash).buildCompositeIndex()
这是我如何更新“时间戳”属性:
g.E().has('hash', 'c2719586fb6a26d492bf65a0263a1c52f5ff6ef3').property("timestamp", timestamp).next()
其实我发现即使不更新timestamp属性,只是遍历边缘,速度还是很慢:
g.E().has('hash', 'c2719586fb6a26d492bf65a0263a1c52f5ff6ef3').next()
为什么建立“哈希”索引时遍历边缘的速度如此之慢?
您可以在查询上运行profile
以验证索引是否实际被使用:
g.E().has('hash', hash).profile()
您是在加载图形数据之前还是之后创建了索引? 如果之后,您应该首先重新索引数据:
mgmt.updateIndex(mgmt.getGraphIndex("HashComposite"), SchemaAction.REINDEX).get()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.