2

以下のこのクエリは、Web インターフェースを介して問題なく実行できます。完了するのにほとんど時間がかかりません。

SELECT from Person;

しかし、Java アプリケーションから実行しようとすると、完了するまでに 17 秒以上かかります。

私が使用しているコードは、基本的に次の 2 行です。

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

REST リクエストが非常に遅いのではないでしょうか? 私のJavaアプリはリモート接続を使用していますが、Webインターフェースはplocalを使用しています(推測)。

4

1 に答える 1

2

コンソールからも同じクエリを実行してみてください。コンソールで費やされる時間はほぼ同じである必要があります (Java での時間より少し遅いだけです)。100,000 Vertex クラス Person を挿入するテストを行いました。さまざまなクエリの応答時間は次のとおりです。スタジオ = 7.72 秒、コンソール = 2,043 秒、Java = 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();
于 2016-01-22T16:55:47.213 に答える