拥有大量数据的领域

时间:2015-10-12 21:49:54

标签: android realm

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

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

1 个答案:

答案 0 :(得分:1)

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

1)只要你有两个版本的Realm数据存活,Realm就必须维护这些版本之间的差异。差异越大,使用的空间越大。

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

3)diff的大小与您正在进行的提交数量有关,因此最好比较少的提交做更少的提交。

4)现在Realm不再回收不再使用的空间。所以,让我们说你的数据库文件扩展到400 MB,因为你有两个版本的数据同时存在。当您关闭最旧版本时,即使内部数据可能只有200 MB,光盘上的文件仍保持为400 MB。这是正在处理的事情,但您也可以通过调用Realm.compactRealm()手动回收空间。