ObjectBox:有人请澄清磁盘空间会发生什么?

问题描述

我注意到当我使用 obStore.remove(someObjects) 删除某些内容时,DB 文件的大小不会改变。这里 (https://docs.objectbox.io/faq#how-to-reclaim-disk-space-used-by-objectbox) 它说 BoxStore.removeAllObjects() 不回收磁盘空间。那么当我放入新数据时,未释放的磁盘空间会被重用吗? FAQ 建议调用 BoxStore.deleteallFiles 来回收磁盘空间。那是只释放未使用的空间并保留有效数据,还是会破坏整个数据库?如果是后者(正如我推测的那样),有没有办法只释放未使用的空间?

解决方法

FAQ entry 已更新以涵盖您提出的问题。

与您的问题最相关的部分:

在大多数情况下,ObjectBox 以最佳方式使用磁盘空间。只有一次 您添加更多数据,数据库文件会根据需要增长。当你 删除数据,文件区域在内部被标记为未使用,并将被 被 ObjectBox 重用。请注意,重新使用现有的文件区域很多 比缩小和扩大文件更有效。在实践中,一旦 使用过的文件存储将来会再次使用;尤其 考虑到存储的数据随着时间的推移会越来越多。

非标准用例可能需要数据存储的临时高峰 空间,然后是永久删除存储空间。到 为这些情况回收磁盘空间,您需要删除数据库 文件并稍后恢复[...]