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应用程序使用远程连接。
答
尝试从控制台也运行相同的查询。 在控制台上花费的时间应该大致相同(只比java中慢一点)。 我做了一个插入100,000个顶点类Person的测试。做各种查询响应时间为: 工作室= 7.72秒,控制台= 2043秒,爪哇= 1:23到1:41秒
如果从一个非常不同时间的收入,或许什么是错在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的东西。我会从另一个系统尝试,看看是否有一些差异。 –
之后,你第一次运行这个查询,下一次执行需要更短的时间或响应时间总是差不多?因为在温暖的环境中,db雇员的响应时间有点高是正常的。 –
它确实速度更快,在第二次运行后它保持在15秒左右。这仍然比从Web界面执行查询要慢,其中响应几乎是即时的。 –