我已经用Neo4j做了一段时间的实验。我一直在插入来自医学术语数据库SNOMED的数据,以便对大型数据集进行实验。
在实验过程中,我反复插入然后删除了大约450,000个节点。我发现Neo的表现有点不令人满意。例如,我刚刚从数据库中删除了所有节点。运行查询:
match (n) return count (n)返回0个节点需要13085毫秒。
我很难理解为什么要花这么长时间才能数到0。Neo是否保留了被删除节点的一些记忆?它在某种程度上是因为我过去插入和删除了大量节点而步履蹒跚吗?如果我删除数据目录,而不是用Cypher删除所有节点,性能是否会更好?
或者是否存在一些内存分配等方面的闲置操作,这可能会有所帮助?
我在一台运行Linux Mint的老式笔记本电脑上运行它。
发布于 2014-08-02 21:44:13
这在一定程度上要归功于ne4j的商店格式。创建新的节点或关系会为它们分配ids,其中ids是存储文件的实际偏移量。删除节点或关系会在存储文件中将该记录标记为未使用。通过扫描节点存储文件来发现正在使用的记录,可以查看所有节点。
https://stackoverflow.com/questions/25093751
复制相似问题