一点neo4j导入数据实践

本文探讨了在Neo4j 3.5.3版本中数据导入的实践,包括`unwind`和`load csv`方法。使用`load csv`配合`using periodic commit`时,遇到`eager`问题导致性能下降。建议通过调整导入策略,如并行加载点,单线程导入边,以提高导入效率。同时,文章提供了优化Neo4j配置和理解其行为的参考文献。
摘要由CSDN通过智能技术生成

neo4j版本

使用3.5.3

unwind

测试使用jdbc批量插入的形式,驱动使用bolt协议,测试发现使用http协议数据库服务端直接承受不了负载不响应请求。

load csv

load csv 可以定时提交数据到neo4j,使用语法using periodic commit 10000,这种方式写是很方便的,但是有个问题,比如我们的导入的数据是一个点很多关系的,那我们肯定希望点不能重复,那我们需要使用merge语法来写数据,因为merge = match + create,所以我们需要对点建立索引(neo4j不支持边建立索引),这样才能更快的写数据,为了保证点不重复,我们需要建立唯一约束,如CREATE CONSTRAINT ON (n:node) ASSERT n.obj_id IS UNIQUE,这样我们对点就建立了标签为node的索引,这样导入数据是不是就万事大吉了呢,肯定不是,这时我们可能会遇到eager问题,何为eager?,eager行为代表捞所有数据到内存,会使得load csv中添加的定期提交语句using periodic commit 10000失效,在大量数据载入时出现fullGC,同时可能出现死锁。如何测试cypher语句是否还有eager行为呢,可以使用cypher profile,如:

cypher profile load csv with headers from 'file:///245' as line with line limit 0
merge (
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值