neo4j bolt驱动程序比http端点慢

v r*_*dla 6 neo4j neo4j-bolt

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

在应用程序上下文级别创建的驱动程序实例:驱动程序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();
Run Code Online (Sandbox Code Playgroud)

此查询始终比http端点花费的时间加倍.大多数时间在driver.getSession().我在这做错了吗?如何使用bolt java驱动程序和并发用户执行读取查询来获得高吞吐量?

Nig*_*all 3

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

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