领域文件的大小如何发展?
领域文件的大小如何发展?
首先:我有一个包含多个属性的领域文件,其中一个是860个条目的数组,每个数组条目又包含一些属性。 一个数组属性表示条目的名称。
我观察到以下情况:
- 如果名称属性是“Criteria_A1”(直到“Criteria_A860”) – 那么领域文件是1.6 MB大
- 如果名称属性是“A1”(直到“A860”) – 那么领域文件只有786 kB大
为什么array-name-property中的额外字母使领域文件变得更大?
第二个观察:
- 如果我添加更多的对象(每个都有860个条目的数组),那么文件大小再次获得1.6MB的大(无论我添加多less对象;猜测,直到再次出现临界值,错误??)。
在我看来,786 kB的领域文件的大小一增加了一倍(或者是一个包含更多字母的属性或一个添加的对象),其大小就会增加一倍。 为什么领域文件在临界值上翻倍,并且在添加更多内容时不会线性增加?
感谢您对此的澄清。
这很好观察。 🙂 Realm文件在大约4k处开始,一旦空闲空间用尽,大小将增加一倍。 它一直保持到128M,然后不断增加128M。
加倍文件的原因不仅仅是线性增长只是由于性能。 dynamic数据结构只是保持加倍是一种常见的algorithm。
您可以使用如下所示的可用方法编写删除文件中所有可用空间的压缩副本。 如果您不再添加新数据,想要发送一个静态数据库或想通过networking发送文件,这可能很有用。
-
Realm.writeCopyToURL(_:encryptionKey:)
在Swift中 - Objective-C中的
-[RLMRealm writeCopyToURL:encryptionKey:error:]
- Java中的
Realm.writeCopyTo()
提到的那些阈值和algorithm是现在的,并且可能在将来的版本中改变。
希望澄清?