OrientDB查询方式太慢

问题描述:

我可以通过web界面在下面执行该查询。几乎没有时间完成。OrientDB查询方式太慢

SELECT from Person; 

但是,当我尝试从我的Java应用程序执行它时,它需要超过17秒才能完成。

我正在使用的代码基本上是这样两条线:

OrientGraph graph = new OrientGraph("remote:93.x.x.x/test"); 
OCommandRequest req = graph.command(new OCommandSQL(query)); 
req.execute(); 

难道说的REST请求是这么多慢? Web界面使用plocal(我猜),而我的Java应用程序使用远程连接。

+0

之后,你第一次运行这个查询,下一次执行需要更短的时间或响应时间总是差不多?因为在温暖的环境中,db雇员的响应时间有点高是正常的。 –

+0

它确实速度更快,在第二次运行后它保持在15秒左右。这仍然比从Web界面执行查询要慢,其中响应几乎是即时的。 –

尝试从控制台也运行相同的查询。 在控制台上花费的时间应该大致相同(只比java中慢一点)。 我做了一个插入100,000个顶点类Person的测试。做各种查询响应时间为: 工作室= 7.72秒,控制台= 2043秒,爪哇= 1:23到1:41秒 enter image description here

如果从一个非常不同时间的收入,或许什么是错在java中。 您已经显示“OCommandSQL”,请检查“OSQLSynchQuery”以查看是否有很大差异。

String query = ""; 
    Iterable<Vertex> result; 

    query = "select from Persona"; 

    //query with OSQLSynchQuery 
    result = g.command(new OSQLSynchQuery<Vertex>(query)).execute(); 
    List<OrientVertex> listVertex = new ArrayList<OrientVertex>(); 
    CollectionUtils.addAll(listVertex, result.iterator()); 

    //query with OCommandSQL   
    OCommandRequest req = g.command(new OCommandSQL(query)); 
    req.execute(); 
+0

我现在试着从控制台查询,时间低于1秒。我也尝试了OSQLSynchQuery,但时间保持不变。我想这是用java的东西。我会从另一个系统尝试,看看是否有一些差异。 –