精华 Neo4j 社区版与企业版性能对比测试
发布于 6 年前 作者 zhizh 18939 次浏览 来自 分享

经常有朋友问道,Neo4j 社区版与企业版的性能到底有什么差别?为了准确回答这个问题,最近我们做了一次对比测试,测试数据表明,企业版与社区版的性能比是 2~4 倍。以下是详细的测试报告,供朋友们参考。

测试环境: 机器: Surface Pro 4 系统: Microsoft Windows 10 专业版 64 位 版本 10.0.15063 处理器: Intel® Core™ i7-6650U CPU @ 2.20GHz 2208Mhz, 2 个内核, 4 个逻辑处理器 硬盘: 1 TB SSD 内存: 16 GB 版本: neo4j-community-3.4.1-windows.zip vs neo4j-enterprise-3.4.1-windows.zip 配置: dbms.memory.heap.initial_size=5g dbms.memory.heap.max_size=5g dbms.memory.pagecache.size=7g 数据源:https://snap.stanford.edu/data/twitter-2010.txt.gz twitter-2010.txt.gz (5,501,785,223 字节,展开后 26,141,060,589 字节,1,468,365,182 行)

测试步骤: 1、第一次导入: USING PERIODIC COMMIT 1000 LOAD CSV FROM “file:/twitter-2010.txt.gz” AS line FIELDTERMINATOR ’ ’ WITH toInt(line[0]) as id MERGE (n:Person {id:id}) ON CREATE SET n.name = toString(id), n.sex = [“男”, “女”][(id % 2)], n.age = (id % 50) + 15, n.country = [“中国”, “美国”, “法国”, “英国”, “俄罗斯”, “加拿大”, “德国”, “日本”, “意大利”][(id % 9)] 2、第二次导入: USING PERIODIC COMMIT 1000 LOAD CSV FROM “file:/twitter-2010.txt.gz” AS line FIELDTERMINATOR ’ ’ WITH toInt(line[1]) as id MERGE (n:Person {id:id}) ON CREATE SET n.name = toString(id), n.sex = [“男”, “女”][(id % 2)], n.age = (id % 50) + 15, n.country = [“中国”, “美国”, “法国”, “英国”, “俄罗斯”, “加拿大”, “德国”, “日本”, “意大利”][(id % 9)]

测试记录image.png

测试结论: 两次导入,共导入: 节点 81,755,560 个 属性 163,511,060 个 社区版用时: 第一次导入:31,377,517 ms 第二次导入:38,293,403 ms 企业版用时: 第一次导入:12,135,606 ms 第二次导入:99,210,404 ms 性能对比(企业版比社区版): 第一次导入:2.58 倍 第二次导入:4.15

8 回复

期待数据读取的测试~

有几个问题:

  1. 做这个性能对比测试的时候,有没有建索引?
  2. 贵司有没有使用服务器而不是笔记本电脑的性能对比测试数据?
  3. 服务器环境下,企业版Neo4j因果集群 VS 社区版Neo4j 单机性能对比测试什么时候出一下? 盼答复

@xfs1990 好的。谢谢!

@fangyong624 1、当然建了索引,而且是约束; 2、目前没有; 3、集群会增加最大并发量。导入事务只会在其中一台机器上跑,因此导入速度取决于这台机器的配置。

@zhizh 我们的测试发现,因果集群(3*core)下,写入速度比社区版慢(机器配置相同,内存配置也相同,有索引),有什么方案优化吗?

这是因果集群的实例之间同步需要一定的时间。如果是初次导入,建议先在单实例下进行导入,然后再配置成集群。

@xfs1990 同样期待并发查询的性能,这个才是企业版的价值所在。

@zhizh 请问简单查询的时间效率和内存配置、数据总量是什么关系,怎么计算

回到顶部