折腾:
[已解决]Xcode提交git项目到OSChina上的仓库时出错:curl error Send failure Broken pipe (-1)
之后,需要去:
搞懂,为何realm的数据库的文件为何这么大:
存储了3000多条数据
(与此对比:android的移动端的sql数据库的省市区的数据库文件,只有11M左右。)
此处的iOS中的,
移动端的realm数据库,只有3000多条记录,数据库文件竟然就占用了180多M
-》感觉应该是在10M前后,甚至更少才对。
所以去搞清楚:
realm swift size
App size after using realm · Issue #2581 · realm/realm-cocoa
Realm file size and space on disk · Issue #2852 · realm/realm-cocoa
ios – How does the size of a realm-file develop? – Stack Overflow
ios – Realm: How to get the current size of the database – Stack Overflow
ios – Realm database file size – Stack Overflow
Realm manual install issues on iOS – Stack Overflow
realm swift database file too large
swift2 – Realm file size is too large – Stack Overflow
Re: [realm-cocoa] Archiving a project with realm swift adds 40MB to the binary – Google Groups
最后是:
从新用代码,将服务器端,省市区的3000多条数据,重新下载下来,并写入一个新的realm数据库中,得到完整的数据后,再去用:
writeCopyToURL
写入到另外一个文件
(内部实现了Compact模式,相当于压缩了)
相关代码:
let ducumentPath2 = NSHomeDirectory() + “/Documents” let url = NSURL(string: ducumentPath2) //try realm.writeCopyToURL(NSURL(string: ducumentPath2)!) let fileURL = url!.URLByDeletingLastPathComponent! .URLByAppendingPathComponent(“default.realm”) do { try realm.writeCopyToURL(fileURL) } catch { //XCTFail(“writeCopyToURL failed”) } |
最后压缩后到数据库,只有100多KB左右。
和之前的100多MB比,才是正常的,真正的,适合移动端的数据库的文件大小。
[总结]
默认情况下,Realm数据库的文件的大小,
感觉好像是:
增量式的去占用空间大小的
-》某人遇到原先直邮700多KB,数据稍微多一点,就变成1.4MB
-》空间就增大到原先多2倍了
-》然后数据继续增长,超过1.4MB,再去变成2倍大小
-》估计就是这个原因导致此处的,默认情况下,本来只需要占用很小空间的
3000多条数据
此处竟然占用了180多MB
-》然后是手动删除其中多某些列的数据,文件大小竟然不变
-》别人解释了原因:realm为了避免再次申请所需要的空间,在删除数据后,空间大小不变
-》想要将realm数据库文件大小减小,可以用writeCopyToURL去拷贝出另外一份,内部会执行Compact模式,进行数据压缩,去掉不必要的空间占用。
-》然后此处是,
为了更加降低空间占用,把原先存储的每条数据,从8列减少为4列
在同样是3000多条的前提下
保存后,用writeCopyToURL(压缩)导出后,对比效果十分明显:
原先realm数据库文件:180多MB
(去掉部分数据列再)压缩后的realm数据库文件:110多KB
-》整整差不多算是降低了1000倍!!!
-》最终算是,解决了,Realm数据库文件占用太大空间的问题。
转载请注明:在路上 » [已解决]swift中如何将Realm的数据库文件大小压缩到很小