Performance 在Neo4J中加载大型cypher文件

Performance 在Neo4J中加载大型cypher文件,performance,neo4j,cypher,ongdb,Performance,Neo4j,Cypher,Ongdb,在Windows10中,我很难将密码文件加载到Neo4J中。这个文件是一个175MB的.cql文件,用Cypher语言填充了超过一百万行的节点和边(用分号分隔)——CREATE[node],诸如此类的东西。对于较小的项目,我一直在web浏览器中使用APOC命令: call apoc.cypher.runFile('file:///<file path>') 调用apoc.cypher.runFile('file://') 但是这对于一个百万以上的查询文件来说太慢了。我已经为节点创

在Windows10中,我很难将密码文件加载到Neo4J中。这个文件是一个175MB的.cql文件,用Cypher语言填充了超过一百万行的节点和边(用分号分隔)——CREATE[node],诸如此类的东西。对于较小的项目,我一直在web浏览器中使用APOC命令:

call apoc.cypher.runFile('file:///<file path>')
调用apoc.cypher.runFile('file://')
但是这对于一个百万以上的查询文件来说太慢了。我已经为节点创建了索引,目前正在通过命令运行它:

neo4j-shell -file <file path> -path localhost
neo4j shell-file-path localhost
但这仍然是缓慢的。我在想,有什么办法可以加快吸食量吗


另外,请注意,我使用的是最新的ONGDB构建,而不是直接的Neo4J;我不相信这会有任何实质性的区别。

如果您的非常大的CQL文件的目的仅仅是为了接收数据,那么纯粹使用Cypher进行操作将非常缓慢(甚至可能导致内存不足错误)

如果你正在摄取一个新的NeN4J DB,你应该考虑重构数据,并使用该工具高效地摄取数据。


如果你在一个现有的数据库中摄取数据,你应该考虑将数据和逻辑从CQL文件中重构出来,并使用.< /P> < P>如果你的大CQL文件的目的仅仅是为了获取数据,那么纯粹在CypFER中执行它将会非常慢(甚至可能导致内存不足错误)。

如果你正在摄取一个新的NeN4J DB,你应该考虑重构数据,并使用该工具高效地摄取数据。


如果您正在进入现有的数据库,您应该考虑将数据和逻辑重构为CQL文件,并使用.< /P> < P>我最终使用Cyfshell来进行它。它仍然很慢,但至少它完成了。使用它需要首先打开Neo4J控制台,然后在第二个命令行中使用:

type <filepath>\data.cql | bin\cypher-shell.bat -a localhost -u <user> -p <password> --fail-at-end
type\data.cql | bin\cypher-shell.bat-a localhost-u-p——结束时失败

这适用于Windows 10,但确实需要一段时间。

我最终使用cypher shell接收了它。它仍然很慢,但至少它完成了。使用它需要首先打开Neo4J控制台,然后在第二个命令行中使用:

type <filepath>\data.cql | bin\cypher-shell.bat -a localhost -u <user> -p <password> --fail-at-end
type\data.cql | bin\cypher-shell.bat-a localhost-u-p——结束时失败

这适用于Windows 10,但确实需要一段时间。

在事务外部运行查询时,neo4j。您可以通过在开始时启动一个事务,并每隔几千次查询提交和启动一个新事务来加快速度(内存使用将随着事务大小而增加,因此这是限制事务大小的因素)

示例querys.cypher(具有大小为3的事务):


然后像往常一样运行
cypher shell

在事务外部运行查询时,neo4j。您可以通过在开始时启动事务,每几千个查询提交和启动一个新事务,可以加快速度(内存使用量将随事务大小而增加,因此这是限制事务大小的因素)

示例querys.cypher(具有大小为3的事务):

然后像往常一样运行
cypher shell