我将Neo4J 3.0.6 CE安装在运行Windows Server 2012 r-2的24 GB的虚拟机中的2.4 GHz至强4核(8线程)CPU上。
它运行得很好,通过REST调用客户申请贷款和登录应用程序的详细信息进行频繁(约每秒1-5次)更新。目前总存储规模为18.48 GiB,拥有46,741,582个关系,68,627,444个属性和5,360,756个节点。
最近,我想删除CSV中包含的一系列关系,该CSV大约有1200万行,调用如下:
USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM 'FILE:///ClientCallLogs.csv' AS line
WITH line
MATCH (c:Client {AtlasId: line.AtlasId})
-[ud:`used deviceid`]->
(devID:DeviceId {DID:line.DeviceId})
DELETE ud
在此调用之前,我定义了客户端和设备ID上的指数,如下所示:
CREATE INDEX ON :Client(AtlasId)
和
CREATE INDEX ON :DeviceId(DID)
正在改变
USING PERIODIC COMMIT 1000 to USING PERIODIC COMMIT 100
没有明显的效果。
然而,这个调用开始得很好,但很快CPU就会耗尽,在那之后不久,Neo4J进程变得没有响应,并开始在进一步的REST调用中抛出异常。唯一的补救办法是关闭并重新启动服务器,之后一切都会恢复正常。
我应该换些什么?
1条答案
按热度按时间laawzig21#
您可以尝试使用定期提交。例如每千行:
请务必使用索引: