我注意到,当我使用obStore.remove(someObjects)删除一些东西时,DB文件的大小不会改变。这里(https://docs.objectbox.io/faq#how-to-reclaim-disk-space-used-by-objectbox)说明BoxStore.removeAllObjects()不回收磁盘空间。所以,当我放入新数据时,未释放的磁盘空间会被重用吗?常见问题解答建议调用BoxStore.deleteAllFiles回收磁盘空间。这是只释放未使用的空间并保留有效数据,还是会破坏整个数据库?如果是后者(正如我假设的那样),有没有办法只释放未使用的空间?
发布于 2021-03-08 18:16:59
FAQ entry已更新,以涵盖您提出的问题。
与您的问题最相关的部分:
在大多数情况下,ObjectBox对磁盘空间的使用是相当优化的。只有在添加更多数据后,数据库文件才会根据需要增长。删除数据时,文件区域将在内部标记为未使用,并将由ObjectBox重新使用。请注意,重用现有文件区域比缩小和增大文件效率要高得多。在实践中,曾经使用过的文件存储将在未来再次使用;特别是考虑到存储的数据随着时间的推移有增加的趋势。
和
非标准使用情形可能需要数据存储空间暂时达到峰值,然后永久下降存储空间。要为这些情况回收磁盘空间,您需要删除数据库文件,并在以后恢复它们...
https://stackoverflow.com/questions/66505192
复制相似问题