1
头图
This article was first published on the Nebula Graph Community public account

A performance test report for Nebula Graph distribution v3.1.0.

Contents of this article

  • test environment
  • Test Data

    • About LDBC-SNB
  • test introduction
  • Test cases and results

    • MatchTest1
    • MatchTest2
    • MatchTest3
    • MatchTest4
    • MatchTest5
  • 3.1.0 vs 3.0.0 (Baseline)

    • MatchTest1
    • MatchTest2
    • MatchTest3
    • MatchTest4
    • MatchTest5

Test conclusion

In the v3.1.0 version, the query and data import performance is basically the same as v3.0.0 (Reference: v3.0.0 performance report 🔗 ). MATCH statement is optimized for attribute reading. This test adds a corresponding use case, and the performance is greatly improved compared to v3.0.0.

test environment

Both the server and the stress tester are physical machines

Nebula Graph v3.1.0 性能测试报告

  • Note: The server sets the CPU to Performance mode.

Test Data

The test data adopts the LDBC-SNB SF100 dataset. The size of the SF100 dataset is 100G, with a total of 282,386,021 points and 1,775,513,185 edges. The number of graph space partitions used for testing is 24, and the number of replicas is 3.

About LDBC-SNB

The Linked Data Benchmark Council (LDBC) is the benchmark guide for Graph and RDF data management. The Social Network Benchmark (SNB) is one of the software benchmarks (Benchmarks) developed by the Linked Data Benchmark Committee (LDBC). For the LDBC-SNB dataset, please refer to the following documents:

test introduction

  1. The pressure measurement tool uses k6 based on Go language, please refer to the official website of k6 for details; the client uses nebula-go
  2. The "vu" in "50_vu", "100_vu", etc. on the horizontal axis of the chart represents the concept "virtual user" used by k6, that is, the number of concurrent users in the performance test; 50_vu represents 50 concurrent users, and 100_vu represents 100 Concurrent users, and so on...
  3. The performance baseline uses the officially released version 3.0.0
  4. ResponseTime = Latency (server processing time) + network return result time + client deserialization result time
  5. Parameter Description

    • QPS is throughput rate
    • Latency is time-consuming on the server side
    • ResponseTime is the time taken by the client

Test cases and results

Only include this new match test case

  • QPS is throughput rate
  • Latency is time-consuming on the server side
  • ResponseTime is the time taken by the client

MatchTest1

 match (v:Person) where id(v) == {} return count(v.Person.firstName)

Nebula Graph v3.1.0 性能测试报告

Nebula Graph v3.1.0 性能测试报告

Nebula Graph v3.1.0 性能测试报告

MatchTest2

 match (v:Person)-[e:KNOWS]-(v2) where id(v) == {} and v2.Person.locationIP != 'yyy' return length(v.Person.browserUsed) + length(v2.Person.gender)

Nebula Graph v3.1.0 性能测试报告

Nebula Graph v3.1.0 性能测试报告

Nebula Graph v3.1.0 性能测试报告

MatchTest3

 match (v:Person)-[e:KNOWS]-(v2) where id(v) == {} and v2.Person.locationIP != 'yyy' with v, v2 as v3 return length(v.Person.browserUsed) + (v3.Person.gender)

Nebula Graph v3.1.0 性能测试报告

Nebula Graph v3.1.0 性能测试报告

Nebula Graph v3.1.0 性能测试报告

MatchTest4

 MATCH (m)-[:KNOWS]-(n) WHERE id(m)=={} OPTIONAL MATCH (n)<-[:KNOWS]-(l) RETURN length(m.Person.lastName) AS n1, length(n.Person.lastName) AS n2, l.Person.creationDate AS n3 ORDER BY n1, n2, n3 LIMIT 10

Nebula Graph v3.1.0 性能测试报告

Nebula Graph v3.1.0 性能测试报告

Nebula Graph v3.1.0 性能测试报告

MatchTest5

 MATCH (m)-[:KNOWS]-(n) WHERE id(m)=={} MATCH (n)-[:KNOWS]-(l) WITH m AS x, n AS y, l RETURN x.Person.firstName AS n1, y.Person.firstName AS n2, CASE WHEN l.Person.firstName is not null THEN l.Person.firstName WHEN l.Person.gender is not null THEN l.Person.birthday ELSE 'null' END AS n3 ORDER BY n1, n2, n3 LIMIT 10

Nebula Graph v3.1.0 性能测试报告

Nebula Graph v3.1.0 性能测试报告

Nebula Graph v3.1.0 性能测试报告

v3.1.0 vs v3.0.0 (Baseline)

The following data select the P99 value.

MatchTest1

 match (v:Person) where id(v) == {} return count(v.Person.firstName)

Nebula Graph v3.1.0 性能测试报告

Nebula Graph v3.1.0 性能测试报告

Nebula Graph v3.1.0 性能测试报告

MatchTest2

 match (v:Person)-[e:KNOWS]-(v2) where id(v) == {} and v2.Person.locationIP != 'yyy' return length(v.Person.browserUsed) + length(v2.Person.gender)

Nebula Graph v3.1.0 性能测试报告

Nebula Graph v3.1.0 性能测试报告

Nebula Graph v3.1.0 性能测试报告

MatchTest3

 match (v:Person)-[e:KNOWS]-(v2) where id(v) == {} and v2.Person.locationIP != 'yyy' with v, v2 as v3 return length(v.Person.browserUsed) + (v3.Person.gender)

Nebula Graph v3.1.0 性能测试报告

Nebula Graph v3.1.0 性能测试报告

Nebula Graph v3.1.0 性能测试报告

MatchTest4

 MATCH (m)-[:KNOWS]-(n) WHERE id(m)=={} OPTIONAL MATCH (n)<-[:KNOWS]-(l) RETURN length(m.Person.lastName) AS n1, length(n.Person.lastName) AS n2, l.Person.creationDate AS n3 ORDER BY n1, n2, n3 LIMIT 10

Nebula Graph v3.1.0 性能测试报告

Nebula Graph v3.1.0 性能测试报告

Nebula Graph v3.1.0 性能测试报告

MatchTest5

 MATCH (m)-[:KNOWS]-(n) WHERE id(m)=={} MATCH (n)-[:KNOWS]-(l) WITH m AS x, n AS y, l RETURN x.Person.firstName AS n1, y.Person.firstName AS n2, CASE WHEN l.Person.firstName is not null THEN l.Person.firstName WHEN l.Person.gender is not null THEN l.Person.birthday ELSE 'null' END AS n3 ORDER BY n1, n2, n3 LIMIT 10

Nebula Graph v3.1.0 性能测试报告

Nebula Graph v3.1.0 性能测试报告

Nebula Graph v3.1.0 性能测试报告

Above, you are welcome to go to GitHub to experience the v3.1.0 version, GitHub address: https://github.com/vesoft-inc/nebula/releases/tag/v3.1.0

Exchange graph database technology? To join the Nebula exchange group, please fill in your Nebula business card first, and the Nebula assistant will pull you into the group~~


NebulaGraph
169 声望686 粉丝

NebulaGraph:一个开源的分布式图数据库。欢迎来 GitHub 交流:[链接]


引用和评论

0 条评论