领域文件的大小是如何发展的?
首先:我有一个包含多个属性的领域文件,其中一个是包含 860 个条目的数组,每个数组条目又包含几个属性。
一个数组属性声明条目的名称。
我观察到以下情况:
- 如果名称属性为“Criteria_A1”(直到“Criteria_A860”) - 则领域文件大小为 1.6 MB
- 如果名称属性为“A1”(直到“A860”) - 那么领域文件只有 786 kB 大
为什么数组名称属性中的额外字母使领域文件变得更大?
第二个观察:
- 如果我添加更多对象(每个对象又都有一个包含 860 个条目的数组),那么文件大小会再次变大 1.6MB(无论我添加多少个对象;猜测直到再次达到临界值,大小会增加三倍……或者我是这样吗?错误的??)。
在我看来,一旦添加了某些内容(无论是具有更多字母的属性还是添加的对象),786 kB 的领域文件的大小就会增加一倍。为什么领域文件在临界值处会翻倍,并且不会随着添加的内容而线性增加?
感谢您对此的澄清。
观察得相当好。 :-) Realm 文件起始大小约为 4k,一旦用完可用空间,大小将增加一倍。它不断加倍,直到128M,然后不断增加128M。
文件加倍而不只是线性增长的原因只是出于性能考虑。对于动态数据结构来说,保持加倍是一种常见的算法。
您可以使用如下所示的可用方法来编写压缩副本,删除文件中的所有可用空间。如果您不再添加新数据、想要发送静态数据库或想要通过网络发送文件,这会很有用。
-
Realm.writeCopyToURL(_:encryptionKey:) https://realm.io/docs/swift/latest/api/Classes/Realm.html#/s:FC10RealmSwift5Realm14writeCopyToURLFzTCSo5NSURL13encryptionKeyGSqCSo6NSData__T_在斯威夫特
-
-[RLMRealm writeCopyToURL:encryptionKey:error:] https://realm.io/docs/objc/latest/api/Classes/RLMRealm.html#/c:objc(cs)RLMRealm(im)writeCopyToURL:encryptionKey:error:在 Objective-C 中
-
Realm.writeCopyTo() https://realm.io/docs/java/latest/api/io/realm/Realm.html#writeCopyTo-java.io.File- in Java
提到的这些阈值和算法是当前的,但在未来版本中可能会发生变化。
希望这能澄清?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)