我有一個Neo4j的分貝〜250M節點(社區版,V2.3.2),我需要運行一個查詢,將遍歷所有節點和更新屬性。這不是我的日常查詢的一部分,但一次性的維護任務,我必須跑。更新所有節點的圖形
我可以很容易地用Cypher表達它,但它看起來像Neo4J試圖在內存中保存所有節點,然後執行我的SET操作,導致它耗盡內存,甚至更糟 - 將整個JVM放入不斷的GC循環。任何機會,我可以讓它運行在一個foreach循環,一次在一個節點上運行?
我的Cypher查詢將是:
MATCH (n:MyNode) WHERE NOT HAS (n.newColumn) SET n.newColumn=n.c1+n.c2
如果它運行了大量的時間,我不介意,只是它不會崩潰的服務器本身。如果Cypher不是這項任務的最佳工具,我也可以使用其他API。
而且在更普遍的 - 什麼時候你需要在你的Neo4j DB經營的是「全圖形掃描」查詢的最佳做法是什麼?
謝謝!