Neo4j“空”数据库占用了大量磁盘空间

5

我通过Java API插入了约2M个节点,并在使用一两天后(也是通过Java)将它们删除。现在我的数据库有16k个节点,重量为6GB

为什么这个空间没有被释放?

可能的原因是什么?

2个回答

11

data/graph.db目录包含多个项目:

  • Store本身,分成多个文件
  • 索引
  • 事务日志文件
  • 日志文件(messages.log)

所有您的操作都存储在事务日志中,然后根据keep_logical_logs设置过期。不确定默认值是什么,但我想您可能会使用相当多的空间。

建议检查占用空间的内容。

另外,我们有时发现Neo4j正在运行和停止时使用的空间(例如使用du报告)不同。


好的...我犯了一个错误,没有单独检查每个文件的大小。日志超过了5 GB。不知道它们可以这么快地增长。 - m.cichacz

4
除了Alberto的回答外,该存储库没有紧缩。它留下空记录以供重用,并且它们将永远保留在那里。据我所知,没有可用的工具来压缩存储库(我考虑过亲自编写一个,但通常会说服自己受到此影响的用例不是很多)。
如果您确实有很多插入和删除记录的情况,最好经常重新启动数据库,以便它将标记为已删除的记录进行重复使用。
正如Alberto提到的,当我安装新的neo4j时,我设置的第一件事之一(另一件是堆大小)是keep_logical_logs为1-7天之类的东西。如果让它们无限增长(默认值),它们会变得非常大。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接