为什么我的 Neo4j 数据库比上周更小,即使我一直在添加节点、关系和属性而不是删除它们
Why is my Neo4j database smaller in size compare to last week even though I have been adding nodes, relations and properties instead of removing them
我的数据库以前有80gb,现在加了几百万个节点后,有35gb。
知道在大大缩小数据库大小的 neo4j 幕后发生了什么吗?
这是数据库的系统信息:
有一篇关于 understanding Neo4j database growth 的文章应该可以解释您所看到的内容。
总结一下,当删除发生时,相关关系和节点存储文件中的条目被标记为已删除,但存储没有被压缩(这会弄乱我们的图 ID 编号,因为它们充当我们的指针贮存)。我们存储 .id
个文件,这些文件跟踪在以后添加数据时有资格重用的 ID。因此,在大量节点和关系删除后,您会看到存储大小增加,因为 1. 存储未被压缩以回收已删除的项目 space 和 2. 因为我们正在添加到 .id 文件中的可重用 ID 列表.
稍后添加节点和关系时,将利用可重用 ID,回收存储文件中的那些位置并用于新节点和关系。存储文件不会在 space 中增长,但可重用 ID 列表会缩小,从而导致更多存储 space。
这里可能涉及的另一个因素是 transaction logs,它在将更改刷新到存储之前用作临时事务存储。轮换和保留政策可能会保留事务文件的时间超过您需要的时间(如果您想更改它,请调整轮换和保留设置,不要自行修改或删除事务日志)。事务日志通常会占用大量空间,因此如果您过了一个点,可以修剪大部分事务日志,那么这可以解释 space 差异。
我的数据库以前有80gb,现在加了几百万个节点后,有35gb。
知道在大大缩小数据库大小的 neo4j 幕后发生了什么吗?
这是数据库的系统信息:
有一篇关于 understanding Neo4j database growth 的文章应该可以解释您所看到的内容。
总结一下,当删除发生时,相关关系和节点存储文件中的条目被标记为已删除,但存储没有被压缩(这会弄乱我们的图 ID 编号,因为它们充当我们的指针贮存)。我们存储 .id
个文件,这些文件跟踪在以后添加数据时有资格重用的 ID。因此,在大量节点和关系删除后,您会看到存储大小增加,因为 1. 存储未被压缩以回收已删除的项目 space 和 2. 因为我们正在添加到 .id 文件中的可重用 ID 列表.
稍后添加节点和关系时,将利用可重用 ID,回收存储文件中的那些位置并用于新节点和关系。存储文件不会在 space 中增长,但可重用 ID 列表会缩小,从而导致更多存储 space。
这里可能涉及的另一个因素是 transaction logs,它在将更改刷新到存储之前用作临时事务存储。轮换和保留政策可能会保留事务文件的时间超过您需要的时间(如果您想更改它,请调整轮换和保留设置,不要自行修改或删除事务日志)。事务日志通常会占用大量空间,因此如果您过了一个点,可以修剪大部分事务日志,那么这可以解释 space 差异。