江铃控股 - 标杆的Neo4j

问题描述 投票:0回答:1

我目前正在使用JMH数据库模型的基准测试2种不同的实现方式,其中之一是Neo4j的。

我现在面临的问题是,所测量的时间是在浏览器的Neo4j所示的时间大不相同。

使用JMH:

Benchmark             Mode  Cnt     Score   Error  Units
Neo4j_JDBC.run        avgt       2434.298          ms/op
NEO4j_EMBEDDED.run    avgt          0.316          ms/op

在Neo4j的浏览器:

Started streaming 1 records after 2 ms and completed after 2 ms.

该查询是相同的,不管我采取嵌入式服务器或使用JDBC远程之一连接。

江铃控股的代码:

@Setup
    public void setup() throws SQLException {
        con = DriverManager.getConnection("jdbc:neo4j:bolt://localhost", "neo4j", "password");
    }

    @TearDown
    public  void  tearDown() throws SQLException {
        con.close();
    }


    @Benchmark
    @BenchmarkMode(Mode.AverageTime)
    @OutputTimeUnit(TimeUnit.MILLISECONDS)
    @Measurement(iterations = 1, time = 1)
    @Fork(1)
    public void run() throws SQLException {
            String query = "query...";
            Statement st = con.createStatement();
            st.executeQuery(query);    
    }

实现从the documentation直取

相反的是用于第二数据模型虽然,使用一个MySQL服务器的情况。

有在DataGrip“真正的”执行速度(同样使用JDBC)被证明是100毫秒〜和我的基准测试显示周围1.6毫秒/ OPS。

我失去了我的配置些什么呢?

这是连正确的方式与不同型号的基准不同的数据库系统?

任何帮助表示赞赏!

编辑:我更新了江铃控股的代码无法测量连接实例,现在我与MySQL比较的Neo4j时得到如下结果:

Benchmark                 Mode  Cnt   Score   Error  Units
MYSQL_JDBC.run            avgt        1.224          ms/op
Neo4j_JDBC.run            avgt       18.580          ms/op

MySQL的代码几乎是一样的上面只是用不同的JDBC URL。

执行时间在Datagrip为MySQL查询:

1 row retrieved starting from 1 in 301ms (execution: 202ms, fetching: 99ms)

显然,更多的时候我执行它,越快它不过是最低它已经在Datagrip为45ms。甚至还没有接近到1.2毫秒/ OP我测量使用JMH。

它是也许缓存的问题?抑或是不正确的测量?

java mysql neo4j benchmarking microbenchmark
1个回答
1
投票

您还测量,它需要建立在江铃控股与数据库的连接时,与数据库直接交互没有。尝试重构连接到字段和执行性能测试之前设置它。

© www.soinside.com 2019 - 2024. All rights reserved.