6

到目前为止,我们正在使用 http 端点进行读取查询,并计划转移到 java bolt 驱动程序。但在最初的测试中,观察到螺栓驱动程序比 http 端点慢。以下是我们正在使用的 java 驱动程序代码。

在应用程序上下文级别创建的驱动程序实例:Driver neo4jReadDriver = GraphDatabase.driver("bolt://xyz.com", AuthTokens.basic("neo4j","neo4j" ), Config.build().withMaxSessions(20).toConfig ());

执行查询的应用程序代码:

    Session session = neo4jReadDriver .session();

    StatementResult result = session.run( "MATCH(p:GOE) return count(p) as cnt");


    while ( result.hasNext() )
    {
        Record record = result.next();
        System.out.println("Total number of GOEs:"+ record.get( "cnt").asInt());

    }
    result.consume();
    session.close();
    driver.close();

此查询始终花费两倍于 http 端点的时间。大部分时间花在 driver.getSession() 上。我在这里做错什么了吗?如何在并发用户执行读取查询的情况下使用 Bolt Java 驱动程序获得高吞吐量?

4

1 回答 1

3

从您的描述中不清楚您将 Bolt 的哪些方面与 HTTP 的哪些方面以及您正在测量的指标进行比较。最大吞吐量?单个查询延迟?对于什么工作量?您是否在测试中考虑过缓存变暖?

鉴于 Bolt 是有状态且 HTTP 无状态的,因此在您的测量中包含会话获取和释放没有任何价值;事实上,这会扭曲你的读数。相反,只比较查询和结果部分。

于 2016-06-20T10:17:36.087 回答