我一直在试验Neo4j一段时间了。我一直在插入医学术语数据库SNOMED中的数据,以便试验大型数据集。
在进行实验时,我反复插入然后删除了大约450,000个节点。我发现Neo的表现有点令人不满意。例如,我刚从数据库中删除了所有节点。运行查询:
match (n) return count (n)
返回0个节点需要13085 ms。
我很难理解为什么这个时间可能会花费0件事。 Neo是否保留了一些被删除的节点的内存?是否因为我过去插入并删除了大量节点这一事实而受到阻碍?如果删除数据目录而不是删除Cypher的所有节点,它可能会表现得更好吗?
或者是否有一些内容分配等问题可能会有所帮助?
我在运行Linux Mint的老式笔记本电脑上运行它。
答案 0 :(得分:2)
部分原因是neo4j的商店格式。创建新节点或关系会为它们分配id,其中id是存储文件中的实际偏移量。删除节点或关系标记记录为未在商店文件中使用。查看所有节点是通过扫描节点存储文件来查找正在使用的记录来完成的。