技术学习分享_CKX技术 技术资讯 NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

广告位

本文首发于 Nebula Graph Community 公众号

NebulaGraph v3.2.0 性能报告

本文系 NebulaGraph 社区版 v3.2.0 的性能测试报告。

本文目录

  • 总结

  • 测试环境

  • 测试数据

    • 关于LDBC-SNB
  • Nebula Commit

  • 测试说明

  • 基线测试

    • 用例和结果
      • 查询带边属性
      • 查询带目的点属性
      • 查询带边属性+目的点属性
      • LOOKUP
      • FETCH点
      • FETCH边
      • MATCH索引
      • MATCH一跳
      • MATCH两跳
      • 插入点
      • 插入边
      • MatchTest1
      • MatchTest2
      • MatchTest3
      • MatchTest4
      • MatchTest5
  • 3.2.0 vs 3.1.0(Baseline)

    • 查询带边属性
    • 查询带目的点属性
    • 查询带边属性+目的点属性
    • LOOKUP
    • FETCH点
    • FETCH边
    • MATCH索引
    • MATCH一跳
    • MATCH两跳
    • 插入点
    • 插入边
    • MatchTest1
    • MatchTest2
    • MatchTest3
    • MatchTest4
    • MatchTest5
  • 新增测试用例

    • 测试用例和结果(新增case)
      • 查询带边属性_count
      • 查询带目的点属性_count
      • LOOKUP_count
      • Match_count
      • Match1Hop_count
      • Match2Hop_count
    • 3.2.0 vs 3.1.0(新增case)
      • 查询带边属性_count
      • 查询带目的点属性_count
      • LOOKUP_count
      • Match_count
      • Match1Hop_count
      • Match2Hop_count

总结

v3.2.0 版本针对点边进行了计算下推的优化,性能总体上较 v3.1.0 版本有小幅上升,主要表现如下:

  • 整体用例的 Latency 性能均有小幅度提升,耗时降低约 5%~10%

  • Match 索引及 Match2Hop 的 QPS 增幅约 20%

本次报告新增了 go 、match、lookup 查询返回 count 的用例,同时新增了 RowSize 指标,结合其它指标一起可以分析「网络回传结果时长 + 客户端反序列化结果时长」对 QPS 的影响。

从性能曲线图中,可以看到部分用例 QPS 大于 10w 后会骤然下降,因为目前使用的是单机压测,大于 10w 后客户端会出现瓶颈无法发生更多请求,后续可以考虑多个压测机进行测试。

测试环境

服务器和压测机皆为物理机

NebulaGraph v3.2.0 性能报告

测试数据

测试数据采用 LDBC-SNB SF100 数据集,SF100数据集大小为 100G,共有 282,386,021 个点以及 1,775,513,185 条边。测试用的图空间分区数为 24,副本数为 3。

关于LDBC-SNB

关联数据基准委员会(LDBC,Linked Data Benchmark Council),是图(Graph)和 RDF 数据管理的基准指南制定者。社交网路基准(SNB,Social Network Benchmark)是关联数据基准委员会(LDBC)开发的软件基准(Benchmark)之一。关于 LDBC-SNB 数据集,具体请参考以下文档:

NebulaGraph Commit

  • nebula-graphd version ef6d6a0
  • nebula-storaged version ef6d6a0
  • nebula-metad version ef6d6a0

测试说明

  1. 压测工具使用基于 Go 语言的 k6,具体请参阅 k6 官方网站;客户端使用的是 nebula-go

  2. 图表中横坐标轴的“50_vu“、“100_vu“等中的”vu“表示的是 k6 使用的概念“virtual user”,即性能测试中的并发数;50_vu 表示 50 个并发用户,100_vu 表示 100 个并发用户,以此类推…

  3. 性能基线使用正式发布的 3.1.0 版本

  4. ResponseTime = Latency(服务端处理时长)+网络回传结果时长+客户端反序列化结果时长

基线测试

注:下图涉及的词语解释

  • QPS 即吞吐率
  • Latency 即服务端耗时
  • ResponseTime 即客户端耗时
  • RowSize 即请求返回行数

用例和结果

查询带边属性

GO {} STEP FROM {} OVER KNOWS yield KNOWS.creationDate

一跳·吞吐率

NebulaGraph v3.2.0 性能报告

一跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·请求返回行数

NebulaGraph v3.2.0 性能报告

两跳·吞吐率

NebulaGraph v3.2.0 性能报告

两跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

两跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

两跳·请求返回行数

NebulaGraph v3.2.0 性能报告

三跳·吞吐率

NebulaGraph v3.2.0 性能报告

三跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·请求返回行数

NebulaGraph v3.2.0 性能报告

查询带目的点属性

GO {} STEP FROM {} OVER KNOWS yield $$.Person.firstName

一跳·吞吐率

NebulaGraph v3.2.0 性能报告

一跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·请求返回行数

NebulaGraph v3.2.0 性能报告

两跳·吞吐率

NebulaGraph v3.2.0 性能报告

两跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

两跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

两跳·请求返回行数

NebulaGraph v3.2.0 性能报告

三跳·吞吐率

NebulaGraph v3.2.0 性能报告

三跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·请求返回行数

NebulaGraph v3.2.0 性能报告

查询带边属性+目的点属性

GO {} STEP FROM {} OVER KNOWS yield DISTINCT KNOWS.creationDate as t, $$.Person.firstName, $$.Person.lastName, $$.Person.birthday as birth | order by $-.t, $-.birth | limit 10

一跳·吞吐率

NebulaGraph v3.2.0 性能报告

一跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·请求返回行数

NebulaGraph v3.2.0 性能报告

二跳·吞吐率

NebulaGraph v3.2.0 性能报告

二跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·请求返回行数

NebulaGraph v3.2.0 性能报告

三跳·吞吐率

NebulaGraph v3.2.0 性能报告

三跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·请求返回行数

NebulaGraph v3.2.0 性能报告

LOOKUP

LOOKUP ON Person WHERE Person.firstName == '{}' YIELD Person.firstName, Person.lastName, Person.gender, Person.birthday, Person.creationDate, Person.locationIP, Person.browserUsed

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

FETCH 点

FETCH PROP ON Person {} YIELD Person.firstName, Person.lastName, Person.gender, Person.birthday, Person.creationDate, Person.locationIP, Person.browserUsed

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

FETCH 边

FETCH PROP ON KNOWS {} -> {} YIELD KNOWS.creationDate

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

MATCH 索引

MATCH (v:Person) WHERE v.Person.firstName == '{}' RETURN v

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

MATCH 一跳

MATCH (v1:Person)-[e:KNOWS]->(v2:Person) WHERE id(v1) == {} RETURN v2

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

MATCH 两跳

MATCH (v1:Person)-[e:KNOWS*2]->(v2:Person) WHERE id(v1) == {} RETURN v2

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

插入点

INSERT VERTEX Comment (creationDate, locationIP, browserUsed, content, length) VALUES {}:('{}', '{}', '{}', '{}', {})

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

插入边

INSERT EDGE LIKES (creationDate) VALUES {}→{}:('{}')

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

MatchTest 1

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

吞吐率

NebulaGraph v3.2.0 性能报告

服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

请求返回行数

NebulaGraph v3.2.0 性能报告

MatchTest 2

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

吞吐率

NebulaGraph v3.2.0 性能报告

服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

请求返回行数

NebulaGraph v3.2.0 性能报告

MatchTest 3

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)

吞吐率

NebulaGraph v3.2.0 性能报告

服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

请求返回行数

NebulaGraph v3.2.0 性能报告

MatchTest 4

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

吞吐率

NebulaGraph v3.2.0 性能报告

服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

请求返回行数

NebulaGraph v3.2.0 性能报告

MatchTest 5

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

吞吐率

NebulaGraph v3.2.0 性能报告

服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

请求返回行数

NebulaGraph v3.2.0 性能报告

3.2.0 vs 3.1.0(Baseline)

以下数据选取 P99 值。

查询带边属性

GO {} STEP FROM {} OVER KNOWS yield KNOWS.creationDate

一跳·吞吐率

NebulaGraph v3.2.0 性能报告

一跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·吞吐率

NebulaGraph v3.2.0 性能报告

二跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·吞吐率

NebulaGraph v3.2.0 性能报告

三跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

查询带目的点属性

GO {} STEP FROM {} OVER KNOWS yield $$.Person.firstName

一跳·吞吐率

NebulaGraph v3.2.0 性能报告

一跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·吞吐率

NebulaGraph v3.2.0 性能报告

二跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·吞吐率

NebulaGraph v3.2.0 性能报告

三跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

查询带边属性+目的点属性

GO {} STEP FROM {} OVER KNOWS yield DISTINCT KNOWS.creationDate as t, $$.Person.firstName, $$.Person.lastName, $$.Person.birthday as birth | order by $-.t, $-.birth | limit 10

一跳·吞吐率

NebulaGraph v3.2.0 性能报告

一跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·吞吐率

NebulaGraph v3.2.0 性能报告

二跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·吞吐率

NebulaGraph v3.2.0 性能报告

三跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

LOOKUP

LOOKUP ON Person WHERE Person.firstName == '{}' YIELD Person.firstName, Person.lastName, Person.gender, Person.birthday, Person.creationDate, Person.locationIP, Person.browserUsed

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

FETCH 点

FETCH PROP ON Person {} YIELD Person.firstName, Person.lastName, Person.gender, Person.birthday, Person.creationDate, Person.locationIP, Person.browserUsed

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

FETCH 边

FETCH PROP ON KNOWS {} -> {} YIELD KNOWS.creationDate

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

MATCH 索引

MATCH (v:Person) WHERE v.Person.firstName == '{}' RETURN v

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

MATCH 一跳

MATCH (v1:Person)-[e:KNOWS]->(v2:Person) WHERE id(v1) == {} RETURN v2

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

MATCH 两跳

MATCH (v1:Person)-[e:KNOWS*2]->(v2:Person) WHERE id(v1) == {} RETURN v2

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

插入点

INSERT VERTEX Comment (creationDate, locationIP, browserUsed, content, length) VALUES {}:('{}', '{}', '{}', '{}', {})

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

插入边

INSERT EDGE LIKES (creationDate) VALUES {}→{}:('{}')

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

MatchTest 1

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

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

MatchTest 2

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

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

MatchTest 3

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)

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

MatchTest 4

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

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

MatchTest 5

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

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

新增测试用例

测试用例和结果(新增case)

查询带边属性_count

GO {} STEP FROM {} OVER KNOWS yield KNOWS.creationDate | return count(*) ;

一跳·吞吐率

NebulaGraph v3.2.0 性能报告

一跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·请求返回行数

NebulaGraph v3.2.0 性能报告

二跳·吞吐率

NebulaGraph v3.2.0 性能报告

二跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·请求返回行数

NebulaGraph v3.2.0 性能报告

三跳·吞吐率

NebulaGraph v3.2.0 性能报告

三跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·请求返回行数

NebulaGraph v3.2.0 性能报告

查询带目的点属性_count

GO 1 STEP FROM {} OVER KNOWS yield $$.Person.firstName | return count(*) 一跳·吞吐率

NebulaGraph v3.2.0 性能报告

一跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·请求返回行数

NebulaGraph v3.2.0 性能报告

二跳·吞吐率

NebulaGraph v3.2.0 性能报告

二跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·请求返回行数

NebulaGraph v3.2.0 性能报告

三跳·吞吐率

NebulaGraph v3.2.0 性能报告

三跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·请求返回行数

NebulaGraph v3.2.0 性能报告

LOOKUP_count

LOOKUP ON Person WHERE Person.firstName == '{}' YIELD Person.firstName  | count(*)

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

Match_count

MATCH (v:Person) WHERE v.Person.firstName == '{}' RETURN count(*)

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

Match1Hop_count

MATCH (v1:Person)-[e:KNOWS]->(v2:Person) WHERE id(v1) == {} RETURN count(*)

吞吐率

NebulaGraph v3.2.0 性能报告

服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

请求返回行数

NebulaGraph v3.2.0 性能报告

Match2Hop_count

MATCH (v1:Person)-[e:KNOWS*2]->(v2:Person) WHERE id(v1) == {} RETURN count(*)

吞吐率

NebulaGraph v3.2.0 性能报告

服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

请求返回行数

NebulaGraph v3.2.0 性能报告

3.2.0 vs 3.1.0(新增case)

查询带边属性_count

GO {} STEP FROM {} OVER KNOWS yield KNOWS.creationDate | return count(*) ;

一跳·吞吐率

NebulaGraph v3.2.0 性能报告

一跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·吞吐率

NebulaGraph v3.2.0 性能报告

二跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·吞吐率

NebulaGraph v3.2.0 性能报告

三跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

查询带目的点属性_count

GO 1 STEP FROM {} OVER KNOWS yield $$.Person.firstName | return count(*) 一跳·吞吐率

NebulaGraph v3.2.0 性能报告

一跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·吞吐率

NebulaGraph v3.2.0 性能报告

二跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·吞吐率

NebulaGraph v3.2.0 性能报告

三跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

LOOKUP_count

LOOKUP ON Person WHERE Person.firstName == '{}' YIELD Person.firstName  | count(*)

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

Match_count

MATCH (v:Person) WHERE v.Person.firstName == '{}' RETURN count(*)

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

Match1Hop_count

MATCH (v1:Person)-[e:KNOWS]->(v2:Person) WHERE id(v1) == {} RETURN count(*)

吞吐率

NebulaGraph v3.2.0 性能报告

服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

Match2Hop_count

MATCH (v1:Person)-[e:KNOWS*2]->(v2:Person) WHERE id(v1) == {} RETURN count(*)

吞吐率

NebulaGraph v3.2.0 性能报告

服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

交流图数据库技术?加入 Nebula 交流群请先填写下你的 Nebula 名片,Nebula 小助手会拉你进群~~


title: “NebulaGraph v3.2.0 性能报告” date: 2022-07-28 description: “v3.2.0 版本针对点边进行了计算下推的优化,性能总体上较 v3.1.0 版本有所提升。整体用例的 Latency 性能均有一定幅度的提升,耗时降低约 5%~10%;Match 索引及 Match2Hop 的 QPS 增幅约 20%。” tags: [“性能测评”] author: “NebulaGraph 官方”

NebulaGraph v3.2.0 性能报告

本文系 NebulaGraph 社区版 v3.2.0 的性能测试报告。

本文目录

  • 总结

  • 测试环境

  • 测试数据

    • 关于LDBC-SNB
  • Nebula Commit

  • 测试说明

  • 基线测试

    • 用例和结果
      • 查询带边属性
      • 查询带目的点属性
      • 查询带边属性+目的点属性
      • LOOKUP
      • FETCH点
      • FETCH边
      • MATCH索引
      • MATCH一跳
      • MATCH两跳
      • 插入点
      • 插入边
      • MatchTest1
      • MatchTest2
      • MatchTest3
      • MatchTest4
      • MatchTest5
  • 3.2.0 vs 3.1.0(Baseline)

    • 查询带边属性
    • 查询带目的点属性
    • 查询带边属性+目的点属性
    • LOOKUP
    • FETCH点
    • FETCH边
    • MATCH索引
    • MATCH一跳
    • MATCH两跳
    • 插入点
    • 插入边
    • MatchTest1
    • MatchTest2
    • MatchTest3
    • MatchTest4
    • MatchTest5
  • 新增测试用例

    • 测试用例和结果(新增case)
      • 查询带边属性_count
      • 查询带目的点属性_count
      • LOOKUP_count
      • Match_count
      • Match1Hop_count
      • Match2Hop_count
    • 3.2.0 vs 3.1.0(新增case)
      • 查询带边属性_count
      • 查询带目的点属性_count
      • LOOKUP_count
      • Match_count
      • Match1Hop_count
      • Match2Hop_count

总结

v3.2.0 版本针对点边进行了计算下推的优化,性能总体上较 v3.1.0 版本有小幅上升,主要表现如下:

  • 整体用例的 Latency 性能均有小幅度提升,耗时降低约 5%~10%

  • Match 索引及 Match2Hop 的 QPS 增幅约 20%

本次报告新增了 go 、match、lookup 查询返回 count 的用例,同时新增了 RowSize 指标,结合其它指标一起可以分析「网络回传结果时长 + 客户端反序列化结果时长」对 QPS 的影响。

从性能曲线图中,可以看到部分用例 QPS 大于 10w 后会骤然下降,因为目前使用的是单机压测,大于 10w 后客户端会出现瓶颈无法发生更多请求,后续可以考虑多个压测机进行测试。

测试环境

服务器和压测机皆为物理机

NebulaGraph v3.2.0 性能报告

测试数据

测试数据采用 LDBC-SNB SF100 数据集,SF100数据集大小为 100G,共有 282,386,021 个点以及 1,775,513,185 条边。测试用的图空间分区数为 24,副本数为 3。

关于LDBC-SNB

关联数据基准委员会(LDBC,Linked Data Benchmark Council),是图(Graph)和 RDF 数据管理的基准指南制定者。社交网路基准(SNB,Social Network Benchmark)是关联数据基准委员会(LDBC)开发的软件基准(Benchmark)之一。关于 LDBC-SNB 数据集,具体请参考以下文档:

NebulaGraph Commit

  • nebula-graphd version ef6d6a0
  • nebula-storaged version ef6d6a0
  • nebula-metad version ef6d6a0

测试说明

  1. 压测工具使用基于 Go 语言的 k6,具体请参阅 k6 官方网站;客户端使用的是 nebula-go

  2. 图表中横坐标轴的“50_vu“、“100_vu“等中的”vu“表示的是 k6 使用的概念“virtual user”,即性能测试中的并发数;50_vu 表示 50 个并发用户,100_vu 表示 100 个并发用户,以此类推…

  3. 性能基线使用正式发布的 3.1.0 版本

  4. ResponseTime = Latency(服务端处理时长)+网络回传结果时长+客户端反序列化结果时长

基线测试

注:下图涉及的词语解释

  • QPS 即吞吐率
  • Latency 即服务端耗时
  • ResponseTime 即客户端耗时
  • RowSize 即请求返回行数

用例和结果

查询带边属性

GO {} STEP FROM {} OVER KNOWS yield KNOWS.creationDate

一跳·吞吐率

NebulaGraph v3.2.0 性能报告

一跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·请求返回行数

NebulaGraph v3.2.0 性能报告

两跳·吞吐率

NebulaGraph v3.2.0 性能报告

两跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

两跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

两跳·请求返回行数

NebulaGraph v3.2.0 性能报告

三跳·吞吐率

NebulaGraph v3.2.0 性能报告

三跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·请求返回行数

NebulaGraph v3.2.0 性能报告

查询带目的点属性

GO {} STEP FROM {} OVER KNOWS yield $$.Person.firstName

一跳·吞吐率

NebulaGraph v3.2.0 性能报告

一跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·请求返回行数

NebulaGraph v3.2.0 性能报告

两跳·吞吐率

NebulaGraph v3.2.0 性能报告

两跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

两跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

两跳·请求返回行数

NebulaGraph v3.2.0 性能报告

三跳·吞吐率

NebulaGraph v3.2.0 性能报告

三跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·请求返回行数

NebulaGraph v3.2.0 性能报告

查询带边属性+目的点属性

GO {} STEP FROM {} OVER KNOWS yield DISTINCT KNOWS.creationDate as t, $$.Person.firstName, $$.Person.lastName, $$.Person.birthday as birth | order by $-.t, $-.birth | limit 10

一跳·吞吐率

NebulaGraph v3.2.0 性能报告

一跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·请求返回行数

NebulaGraph v3.2.0 性能报告

二跳·吞吐率

NebulaGraph v3.2.0 性能报告

二跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·请求返回行数

NebulaGraph v3.2.0 性能报告

三跳·吞吐率

NebulaGraph v3.2.0 性能报告

三跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·请求返回行数

NebulaGraph v3.2.0 性能报告

LOOKUP

LOOKUP ON Person WHERE Person.firstName == '{}' YIELD Person.firstName, Person.lastName, Person.gender, Person.birthday, Person.creationDate, Person.locationIP, Person.browserUsed

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

FETCH 点

FETCH PROP ON Person {} YIELD Person.firstName, Person.lastName, Person.gender, Person.birthday, Person.creationDate, Person.locationIP, Person.browserUsed

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

FETCH 边

FETCH PROP ON KNOWS {} -> {} YIELD KNOWS.creationDate

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

MATCH 索引

MATCH (v:Person) WHERE v.Person.firstName == '{}' RETURN v

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

MATCH 一跳

MATCH (v1:Person)-[e:KNOWS]->(v2:Person) WHERE id(v1) == {} RETURN v2

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

MATCH 两跳

MATCH (v1:Person)-[e:KNOWS*2]->(v2:Person) WHERE id(v1) == {} RETURN v2

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

插入点

INSERT VERTEX Comment (creationDate, locationIP, browserUsed, content, length) VALUES {}:('{}', '{}', '{}', '{}', {})

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

插入边

INSERT EDGE LIKES (creationDate) VALUES {}→{}:('{}')

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

MatchTest 1

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

吞吐率

NebulaGraph v3.2.0 性能报告

服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

请求返回行数

NebulaGraph v3.2.0 性能报告

MatchTest 2

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

吞吐率

NebulaGraph v3.2.0 性能报告

服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

请求返回行数

NebulaGraph v3.2.0 性能报告

MatchTest 3

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)

吞吐率

NebulaGraph v3.2.0 性能报告

服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

请求返回行数

NebulaGraph v3.2.0 性能报告

MatchTest 4

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

吞吐率

NebulaGraph v3.2.0 性能报告

服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

请求返回行数

NebulaGraph v3.2.0 性能报告

MatchTest 5

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

吞吐率

NebulaGraph v3.2.0 性能报告

服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

请求返回行数

NebulaGraph v3.2.0 性能报告

3.2.0 vs 3.1.0(Baseline)

以下数据选取 P99 值。

查询带边属性

GO {} STEP FROM {} OVER KNOWS yield KNOWS.creationDate

一跳·吞吐率

NebulaGraph v3.2.0 性能报告

一跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·吞吐率

NebulaGraph v3.2.0 性能报告

二跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·吞吐率

NebulaGraph v3.2.0 性能报告

三跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

查询带目的点属性

GO {} STEP FROM {} OVER KNOWS yield $$.Person.firstName

一跳·吞吐率

NebulaGraph v3.2.0 性能报告

一跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·吞吐率

NebulaGraph v3.2.0 性能报告

二跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·吞吐率

NebulaGraph v3.2.0 性能报告

三跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

查询带边属性+目的点属性

GO {} STEP FROM {} OVER KNOWS yield DISTINCT KNOWS.creationDate as t, $$.Person.firstName, $$.Person.lastName, $$.Person.birthday as birth | order by $-.t, $-.birth | limit 10

一跳·吞吐率

NebulaGraph v3.2.0 性能报告

一跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·吞吐率

NebulaGraph v3.2.0 性能报告

二跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·吞吐率

NebulaGraph v3.2.0 性能报告

三跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

LOOKUP

LOOKUP ON Person WHERE Person.firstName == '{}' YIELD Person.firstName, Person.lastName, Person.gender, Person.birthday, Person.creationDate, Person.locationIP, Person.browserUsed

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

FETCH 点

FETCH PROP ON Person {} YIELD Person.firstName, Person.lastName, Person.gender, Person.birthday, Person.creationDate, Person.locationIP, Person.browserUsed

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

FETCH 边

FETCH PROP ON KNOWS {} -> {} YIELD KNOWS.creationDate

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

MATCH 索引

MATCH (v:Person) WHERE v.Person.firstName == '{}' RETURN v

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

MATCH 一跳

MATCH (v1:Person)-[e:KNOWS]->(v2:Person) WHERE id(v1) == {} RETURN v2

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

MATCH 两跳

MATCH (v1:Person)-[e:KNOWS*2]->(v2:Person) WHERE id(v1) == {} RETURN v2

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

插入点

INSERT VERTEX Comment (creationDate, locationIP, browserUsed, content, length) VALUES {}:('{}', '{}', '{}', '{}', {})

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

插入边

INSERT EDGE LIKES (creationDate) VALUES {}→{}:('{}')

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

MatchTest 1

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

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

MatchTest 2

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

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

MatchTest 3

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)

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

MatchTest 4

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

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

MatchTest 5

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

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

新增测试用例

测试用例和结果(新增case)

查询带边属性_count

GO {} STEP FROM {} OVER KNOWS yield KNOWS.creationDate | return count(*) ;

一跳·吞吐率

NebulaGraph v3.2.0 性能报告

一跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·请求返回行数

NebulaGraph v3.2.0 性能报告

二跳·吞吐率

NebulaGraph v3.2.0 性能报告

二跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·请求返回行数

NebulaGraph v3.2.0 性能报告

三跳·吞吐率

NebulaGraph v3.2.0 性能报告

三跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·请求返回行数

NebulaGraph v3.2.0 性能报告

查询带目的点属性_count

GO 1 STEP FROM {} OVER KNOWS yield $$.Person.firstName | return count(*) 一跳·吞吐率

NebulaGraph v3.2.0 性能报告

一跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·请求返回行数

NebulaGraph v3.2.0 性能报告

二跳·吞吐率

NebulaGraph v3.2.0 性能报告

二跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·请求返回行数

NebulaGraph v3.2.0 性能报告

三跳·吞吐率

NebulaGraph v3.2.0 性能报告

三跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·请求返回行数

NebulaGraph v3.2.0 性能报告

LOOKUP_count

LOOKUP ON Person WHERE Person.firstName == '{}' YIELD Person.firstName  | count(*)

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

Match_count

MATCH (v:Person) WHERE v.Person.firstName == '{}' RETURN count(*)

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

Match1Hop_count

MATCH (v1:Person)-[e:KNOWS]->(v2:Person) WHERE id(v1) == {} RETURN count(*)

吞吐率

NebulaGraph v3.2.0 性能报告

服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

请求返回行数

NebulaGraph v3.2.0 性能报告

Match2Hop_count

MATCH (v1:Person)-[e:KNOWS*2]->(v2:Person) WHERE id(v1) == {} RETURN count(*)

吞吐率

NebulaGraph v3.2.0 性能报告

服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

请求返回行数

NebulaGraph v3.2.0 性能报告

3.2.0 vs 3.1.0(新增case)

查询带边属性_count

GO {} STEP FROM {} OVER KNOWS yield KNOWS.creationDate | return count(*) ;

一跳·吞吐率

NebulaGraph v3.2.0 性能报告

一跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·吞吐率

NebulaGraph v3.2.0 性能报告

二跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·吞吐率

NebulaGraph v3.2.0 性能报告

三跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

查询带目的点属性_count

GO 1 STEP FROM {} OVER KNOWS yield $$.Person.firstName | return count(*) 一跳·吞吐率

NebulaGraph v3.2.0 性能报告

一跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

一跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·吞吐率

NebulaGraph v3.2.0 性能报告

二跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

二跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·吞吐率

NebulaGraph v3.2.0 性能报告

三跳·服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

三跳·客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

LOOKUP_count

LOOKUP ON Person WHERE Person.firstName == '{}' YIELD Person.firstName  | count(*)

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

Match_count

MATCH (v:Person) WHERE v.Person.firstName == '{}' RETURN count(*)

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

NebulaGraph v3.2.0 性能报告

Match1Hop_count

MATCH (v1:Person)-[e:KNOWS]->(v2:Person) WHERE id(v1) == {} RETURN count(*)

吞吐率

NebulaGraph v3.2.0 性能报告

服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

Match2Hop_count

MATCH (v1:Person)-[e:KNOWS*2]->(v2:Person) WHERE id(v1) == {} RETURN count(*)

吞吐率

NebulaGraph v3.2.0 性能报告

服务端耗时(ms)

NebulaGraph v3.2.0 性能报告

客户端耗时(ms)

NebulaGraph v3.2.0 性能报告

交流图数据库技术?加入 Nebula 交流群请先填写下你的 Nebula 名片,Nebula 小助手会拉你进群~~

NebulaGraph 的开源地址是 GitHubhttps://github.com/vesoft-inc/nebula ,欢迎体验 and 给我们提建议~

本文来自网络,不代表技术学习分享_CKX技术立场,转载请注明出处。

作者: CKX技术

上一篇
下一篇
广告位

发表回复

返回顶部