【发布时间】:2016-09-19 14:28:24
【问题描述】:
我是 NEO4J 的新手,我想看看它有多快。我开始对其进行测试,并在 MySQL 和 NEO4J 中创建了一个具有以下属性(字段)的表:
id random_number time_stamp
我编写了一个程序来生成海量数据并插入了大约 1.5 亿行(以及 Neo4J 中的节点)。我可以说写入速度几乎相同。
所以,我在两个数据库中测试了一个选择查询。 “我想获得 random_id 为 255454 的行(节点)之一”(我们从这个随机 id 知道有超过 30 行)
NEO4J:
match (t:testLabel {random_id: 255454}) RETURN t LIMIT 50;
MySQL:
SELECT *
FROM test
WHERE random_id=255454 LIMIT 50
NEO4J 大约需要 47 秒,MySQL 大约需要 25 秒才能返回结果。
磁盘上的 NEO4J 大小变为 ~35GB,磁盘上的 MySQL 大小变为 ~5.2 GB
而且两个数据库都没有表或属性的索引。
硬件:CPU: Corei7-4770 | 内存: 12GB | SSD硬盘
这是一个简单的测试,我的意思是两个数据库都非常简单并且具有基本结构,在测试之前我认为 NEO4J 比 MySQL 快。 因为我真的很喜欢 NEO4J,所以我想找到一个解决方案并再次使用它。
根据我的简单测试,NEO4J 不适用于大型且可扩展的项目。我想知道也许有一些方法可以让它更快! 性能测试非常简单,无论数据建模如何,所有数据库都必须拥有它。
那么磁盘的大小呢?
+ 我发现了 Jörg Baach 的另一个比较 question,您可能希望看到。
【问题讨论】:
-
什么,你认为一些外星人写了一些 MySQL 开发人员没有想到的出色代码?如果您喜欢 Neo4J,请使用它。证明它对你有用,不必比 MySQL 快。
-
@N.B.我真的很喜欢NEO4J的方式。但我也需要性能来解决我的问题!
-
真的吗?你的意思是在这么多使用它并认为它是一个有用系统的人中,你是少数拥有一些神秘软件的人之一,你根本无法使用它,因为一个更老更好的程序在愚蠢的合成中击败了它测试? :)
-
@N.B.我并不是说它没有用或类似的东西,正如你在我的问题中看到的那样,我正在寻找一种让它更快的方法!所以,我喜欢使用它,我喜欢让它更快。
-
您将苹果与橙子进行比较。而且......询问如何对数据库引擎进行性能调整对于 StackOverflow 来说是题外话。而且...您的问题的基本问题是关于单个节点的查询时间,没有索引(不现实的场景,不使用索引)。
标签: mysql database performance neo4j