neo4j - 为什么我的 Neo4j 数据库的大小比上周小,即使我一直在添加节点、关系和属性而不是删除它们
解决方案
有一篇关于理解 Neo4j 数据库增长的文章应该可以解释你所看到的。
总而言之,当删除发生时,相关关系和节点存储文件中的条目被标记为已删除,但存储没有被压缩(这会弄乱我们的图形 id 编号,因为它们充当指向我们存储的指针)。我们存储.id
文件,这些文件跟踪以后添加数据时有资格重复使用的 id。因此,在大量节点和关系删除时,您会看到存储大小增加,因为 1. 存储没有被压缩以回收已删除的项目空间和 2. 因为我们正在添加到 .id 文件中的可重用 id 列表。
稍后添加节点和关系时,会利用可重用的 id,并回收存储文件中的这些位置并用于新的节点和关系。存储文件的空间不会增长,但可重用的 ids 列表会缩小,从而产生更多的存储空间。
这里可能涉及的另一个因素是事务日志,它在更改刷新到存储之前用作临时事务存储。轮换和保留策略可能会使事务文件保留的时间超过您需要的时间(如果您想更改,请调整轮换和保留设置,不要自己修改或删除事务日志)。事务日志通常会占用大量空间,因此,如果您通过了可以修剪大部分事务日志的点,那么这可以解释空间差异。
推荐阅读
- node.js - 如何使用 history.push(/nextpath) 或 windows.location?
- python - 相同列名的数据透视表 - 必须在数据透视后重复
- html - 使用角度在移动应用程序中推送通知
- reactjs - 错误:未找到来自 react-redux 的上下文。如果您使用 react-redux v6,则需要 v3.*.* 版本的 react-redux-firebase
- c++ - 所有的 C++ 头文件都是一个类吗?
- wordpress - Wordpress WooCommerce:垃圾/删除产品操作
- python - 如何在 django 中保存一个 html 文件?
- libgit2 - 如何通过在 libgit2 中创建内存索引来提交文件?
- django - Django - 获取的外键在上传页面中显示为下拉列表。如何显示最后输入的数据?
- bazel - Google Cloud Build - 一次替换中的多个值?