海量数据领域

Realm with huge data

我遇到了 realm's 数据库的问题,一切正常,但问题是数据的大小,我发现每次使用我的应用程序时超过 300 Mo,我关闭了所有领域的实例,我在开始时清除表以确保数据库是空的,但每次我 运行 应用程序时,大小总是变大。

我使用 version 0.80 因为我使用了一些自定义方法。

Realm 就是所谓的 MVCC Multi-version Concurrency Control 数据库。这意味着您的数据的多个一致版本可以同时存在。然而,这有一些含义:

1) 只要你有两个版本的 Realm 数据,Realm 就必须保持这些版本之间的差异。差异越大,使用的 space 越多。

2) 非循环线程不会自动更新,因此如果您在后台线程上打开了一个 Realm 实例,您必须手动确保更新该 Realm 实例。这可以通过调用 Realm.refresh() 或执行写入事务来完成。忘记刷新或关闭后台线程上的领域是文件大小爆炸的最常见原因。

3) 差异的大小与您进行的提交数量相关,因此最好少做大的提交,少做小的提交。

4) 现在 Realm 不会回收 space 不再使用。因此,假设您的数据库文件扩展到 400 MB,因为您同时拥有 2 个版本的数据。当您随后关闭最旧的版本时,光盘上的文件仍为 400 MB,即使内部数据可能只有 200 MB。这是正在进行的工作,但您也可以通过调用 Realm.compactRealm().

手动回收 space