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

时间:2014-06-23 14:11:48

标签: java database neo4j diskspace

我已插入~2M节点(通过Java API),并在使用一两天后删除它们(通过java)。现在我的数据库有 16k节点,权重为6 GB

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

可能是什么原因?

2 个答案:

答案 0 :(得分:10)

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

  • 存储自身,拆分为多个文件
  • 索引
  • 交易日志文件
  • 日志文件(messages.log)

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

我建议检查占用空间的是什么。

此外,我们有时会看到当Neo4j运行并停止时,正在使用的空间(例如du报告)会有所不同。

答案 1 :(得分:4)

除了Alberto的回答,商店还没有压缩。它留下空记录以供重用,它们将永远留在那里。据我所知,没有可用的工具来压缩商店(我考虑自己写一个,但通常说服自己没有很多用户受此影响)。

如果您经常在插入和删除记录的过程中经常进行流失,那么经常重新启动数据库是一个好主意,因此它会重复使用已标记为已删除的记录。

正如Alberto所提到的,当我安装一个新的neo4j时,我设置的第一件事(另一个是堆大小)是keep_logical_logs到1-7天。如果你让他们永远成长(默认),他们会变得非常大。