使用OrientDB,ShortestPath查询速度太慢

时间:2014-01-17 09:55:59

标签: java orientdb

我使用以下代码查找两个节点之间的最短路径:

Iterable<Object> spath = orientGraph.getRawGraph().command(new OSQLSynchQuery<Object>( 
                "select shortestPath("+v1.getId()+","+v2.getId()+",'BOTH')"));

我的问题是我需要太多时间。我的图有36,692个顶点和367,662个边,查询大约需要2分钟。我使用orientdb-1.6.2。我的机器有一个2.3 Ghz CPU(i5),4GB RAM和320GB磁盘,我在Macintosh OSX Mavericks(10.9)上运行。

请注意,我的数据库不使用任何特殊配置。我只需使用以下代码打开它:

orientGraph = new OrientGraph("plocal:"+orientDBDir);

我的堆大小也是2GB。

有没有办法在速度方面提升程序?

编辑:我正在尝试使用以下代码打印结果

System.out.println(spath.iterator().next());

经过一些测试后,我意识到spate.iterator()。next()行是减慢过程速度的行。那是为什么?

1 个答案:

答案 0 :(得分:2)

发布1.7-SNAPSHOT解决了这个问题。现在从2分钟开始,相同的查询在0.1秒内返回!