ios – Core Data sqlite-wal文件在插入〜5000行时会获得MASSIVE(> 7GB)

ios – Core Data sqlite-wal文件在插入〜5000行时会获得MASSIVE(> 7GB),第1张

概述我将数据导入Core Data,发现保存 *** 作很慢.使用iOS模拟器,我看到sqlite-wal文件的增长和增长,直到其超过7GB的大小. 我输入约5000个记录,约10个字段.这不是很多的数据. 我插入的每个对象与各种其他对象(总共6个关系)具有一对一的关系.所有这些记录合计少于20个字段.没有图像或任何二进制数据或任何可以看到的东西,这将证明为什么WAL文件的最终大小是如此之大. 我读了描述wa 我将数据导入Core Data,发现保存 *** 作很慢.使用iOS模拟器,我看到sqlite-wal文件的增长和增长,直到其超过7GB的大小.

我输入约5000个记录,约10个字段.这不是很多的数据.

我插入的每个对象与各种其他对象(总共6个关系)具有一对一的关系.所有这些记录合计少于20个字段.没有图像或任何二进制数据或任何可以看到的东西,这将证明为什么WAL文件的最终大小是如此之大.

我读了描述wal文件的sqlite文档,我看不出这可能如何发生.源数据不超过50 MB.

我的应用程序是多线程的.
我在执行导入(创建和保存核心数据对象)的后台线程中创建一个托管对象上下文.

没有在这里编写代码,有没有人遇到这个?任何人都有一个想法,我应该检查什么.代码不是超级简单,所有的部分都需要时间来输入,所以让我们从一般的想法开始.

我会让任何让我走向正确的人.

额外信息:

>我已经禁用了撤销管理器的上下文,因为我不需要(我认为默认情况下在iOS上是零,但我显式设置为nil).
>我只在整个循环完成之后调用保存,所有被管理的对象都在ram中(ram达到100 MB btw).
>核心数据对象的循环和创建只需要5秒左右.在写入文件时,保存需要花费近3分钟的时间.

解决方法 似乎我的评论尝试使用旧的回滚(DELETE)日记帐模式而不是WAL日记帐模式来解决问题.请注意,使用WAL日记帐模式时,似乎存在一系列问题,包括以下内容:

>这个问题
>使用migratePersistentStore API时数据库迁移的问题
>轻量级迁移的问题

也许我们应该启动一个核心数据WAL问题页面,并获得一个全面的列表,并要求苹果修复错误.

请注意,OS X 10.9和iOS 7下的默认模式现在使用WAL模式.要更改此选项,请添加以下选项

@{ NSsqlitePragmaOptions : @{ @"journal_mode" : @"DELETE" } }
总结

以上是内存溢出为你收集整理的ios – Core Data sqlite-wal文件在插入〜5000行时会获得MASSIVE(> 7GB)全部内容,希望文章能够帮你解决ios – Core Data sqlite-wal文件在插入〜5000行时会获得MASSIVE(> 7GB)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1097815.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存