Windows Server 2012 r-2 で実行されている 24 GB の VM の 2.4 GHz Xeon 4 コア (8 スレッド) CPU に Neo4J 3.0.6 CE をインストールしています。
ローンを申請し、アプリにログオンするクライアントの詳細の REST 呼び出しを介した頻繁な (1 秒あたり約 1 ~ 5 回の) 更新で正常に動作します。現在、ストアの合計サイズは 18.48 GiB で、46,741,582 の関係、68,627,444 のプロパティ、および 5,360,756 のノードがあります。
最近、次の呼び出しで約 12m 行の CSV に含まれている一連の関係を削除したいと考えました。
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
この呼び出しの前に、次のように Client と DeviceId にインデックスを定義します。
CREATE INDEX ON :Client(AtlasId)
と
CREATE INDEX ON :DeviceId(DID)
変化
USING PERIODIC COMMIT 1000 to USING PERIODIC COMMIT 100
目立った効果はありません。
ただし、この呼び出しは正常に開始されますが、すぐに CPU が限界に達し、その直後に Neo4J プロセスが応答しなくなり、以降の REST 呼び出しで例外をスローし始めます。その場合の唯一の救済策は、サーバーを強制終了して再起動することです。その後、すべてが正常に戻ります。
何を変更すればよいですか?