在titan-0.5.4中有大约10,000,000条记录(存储后端是hbase和带有es的索引),我只想找到特定圆圈内的顶点并且还有标签“shop”。查询(查询成本)大约运行1秒,但获取顶点(迭代器成本)会花费太多时间。我想知道泰坦如何应对以下多种情况:
long start = System.currentTimeMillis();
Iterator<Vertex> iterator = graph.query().has("geo",Geo.WITHIN, circle(40, 116, 15)).has("label","shop").vertices().iterator();
long end = System.currentTimeMillis();
System.out.println("query cost(ms):" + (end - start));
Set<Vertex> targetVertices = new HashSet<Vertex>();
start = System.currentTimeMillis();
while (iterator.hasNext()){
targetVertices.add(iterator.next());
}
end = System.currentTimeMillis();
System.out.println("iterator cost(ms):" + (end - start));
System.out.println("vertices count): " + targetVertices.size());
为什么它如此缓慢?如何提高查询性能?
答案 0 :(得分:0)
在所有顶点中:
您检查圈内的点数越少,它应该越快。
对于查询的速度,我认为查询本身不进行比较,在您尝试访问结果之前更有可能被延迟,这应该解释获取迭代器所花费的时间。