插入约 5000 行时,核心数据 sqlite-wal 文件变得巨大(>7GB)

2023-11-25

我正在将数据导入 Core Data 并发现保存操作很慢。使用 iOS 模拟器,我观察 sqlite-wal 文件不断增长,直到其大小超过 7GB。

我正在导入大约 5000 条记录,其中包含大约 10 个字段。这并不是很多数据。

我插入的每个对象都与其他各种对象具有一对一关系(总共 6 个关系)。所有这些记录加起来不到 20 个字段。没有图像或任何二进制数据或任何我能看到的东西可以证明为什么 WAL 文件的结果大小如此之大。

我阅读了描述 wal 文件的 sqlite 文档,但我不明白这是如何发生的。源数据不超过 50 MB。

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

代码没有写出来,有没有人遇到过这种情况?任何人都知道我应该检查什么。代码并不是非常简单,所有部分都需要时间在这里输入,所以让我们从一般想法开始。

我会赞扬任何让我朝着正确方向前进的人。

额外信息:

  • 我已经禁用了上下文的撤消管理器,因为我不需要它(我认为它在 iOS 上默认为 nil,但我明确将其设置为 nil)。
  • 我仅在整个循环完成并且所有托管对象都在 RAM 中(RAM 达到 100 MB 顺便说一句)后才调用 save。
  • 核心数据对象的循环和创建只需要5秒左右。保存过程大约需要 3 分钟,因为它会写入 awl 文件。

我的评论似乎是尝试使用旧的回滚(删除)日志模式而不是 WAL 日志模式解决了问题。请注意,使用 WAL 日志模式时似乎存在一系列问题,包括以下内容:

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

也许我们应该启动一个 Core Data WAL 问题页面并获取全面的列表并要求 Apple 修复错误。

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

@{ NSSQLitePragmaOptions : @{ @"journal_mode" : @"DELETE" } }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

插入约 5000 行时,核心数据 sqlite-wal 文件变得巨大(>7GB) 的相关文章

  • Swift 3 中的 _ArrayType 去了哪里?

    我有一些用于中继的代码 ArrayType在 Swift 3 之前 我试图了解公共协议发生了什么 ArrayType 任何想法 ArrayType被重命名 ArrayProtocol 您可以在ArrayType swift https gi
  • 强制变量声明的协议 - Objective C

    是否可以在 protocol中声明变量 只是为了强制程序员在实现类 实现此协议的类 标头和实现中添加这些变量 Thanks 简短回答 不 不可能那样做 您最多可以强制方法和属性的可用性
  • 更新 iOS 应用程序的应用内购买内容?

    我似乎无法在任何地方找到这个问题的答案 所以这里 我正在开发一个 iOS 应用程序 该应用程序将具有非消耗性应用内购买 扩展包 例如 假设我出售一个包含 10 个级别的包 并且在一个月内我想将应用内购买更新为包含 15 个级别 用户无需重新
  • 如何在单击按钮时打开 Instagram 应用程序

    大家好 我正在尝试通过单击按钮打开 Instagram 应用程序 但我没有 我也可以在 plist 中将 Url 方案设置为 instagram NSString instagramURL instagram app NSURL ourUR
  • iPhone - 如何设置 uinavigationbar 高度?

    我想让导航视图的顶部小一点 你将如何实现这一目标 这是我到目前为止所尝试过的 但正如你所看到的 即使我使导航栏变小 它曾经占据的区域仍然存在 黑色 window addSubview navigationController view na
  • 从电话号码确定国际电话代码的算法

    我可以使用 iOS 上的地址簿框架从设备中检索联系人的电话号码 如何区分或识别哪个是国家 地区代码 哪个是实际电话号码 是否可以 国家 地区代码是一个相当混乱的主题 但足够标准 通过一些程序员维护就可以解决它 您可以通过其初始子序列来识别国
  • 最好使用的游戏/物理引擎?

    寻找用于移动游戏开发的游戏 物理引擎 iPhone 有Cocos2D http www cocos2d iphone org 我找到的安卓系统RokonAndroid http rokonandroid com 只是想知道是否还有其他人知道
  • 当应用程序从 iPhone 后台出现时,会调用什么方法?

    我知道当 iphone 应用程序进入后台时 会调用这些方法 void applicationDidEnterBackground UIApplication application void applicationWillResignAct
  • “找不到开发者磁盘映像”

    最近我收到错误 找不到开发人员磁盘映像 我认为自从我将 iPhone 上的 iOS 更新到 9 1 后就会发生这种情况 如何解决该问题并使 Xcode 支持 iOS 9 1 设 备 Xcode 7 0 1 和 iOS 9 1 不兼容 您需要
  • 我可以在 UITextView 中以编程方式选择文本吗?

    我想在 UITextView 上选择文本 类似于我们点击时看到的默认 选择 和 全选 弹出选项 我希望用户能够从我的自定义菜单中执行此操作 我玩了 selectedRange 但这似乎并没有解决问题 有任何想法吗 Thanks The se
  • 管理 iOS 中的布局

    我是新来的iOS开发方面 我对 JAVA Swing 和 Windows 应用程序有扎实的背景 我想学习如何进行布局iOS 我猜iOS没有 布局管理器 就像 Java Swing 中的那样 发展的唯一出路UI是否指定每个控制器的尺寸和位置
  • 在 Cordova / PhoneGap 中生成 iOS 和 Android 图标

    我有一个新创建的 Cordova 项目 其中包含以下内容config xml设置 使用来自http docs phonegap com en edge config ref images md html http docs phonegap
  • 使用 cordova 工具集构建应用程序时出错

    我正在使用 Visual Studio 2017 社区版 并且只需使用 vs 文档中的步骤即可使用 macincloud 服务进行远程构建 我基本上遇到了以下明确的错误 来自构建服务器的远程构建错误https xxxx macincloud
  • 扩展中的 Swift 覆盖函数

    如果我有课 class Spaceship
  • 如何在rollup中使用css @import?

    我尝试创建一个简单的汇总应用程序的配置 但在 css 方面遇到了一些麻烦 这是我的 CSS 文件 import normalize css import typeface roboto html body root height 100 f
  • Rails Resque 作业无法访问数据库,I/O 错误

    我遇到错误 无法找到任何相关信息 这是一个 Ruby on Rails 堆栈 Ruby 1 9 Rails 3 2 并使用 sqlite3 数据库进行开发 Resque 和 Redis 用于后台作业 Rails Web 应用程序启动正常 可
  • 查找 NSString 中子字符串的所有位置(不仅仅是第一个)

    有一个子串在字符串中出现多次 我用rangeOfString 不过好像只能找到第一个位置 如何找到子字符串的所有位置 NSString subString1 NSString subString2 n NSRange range1 newr
  • CoreBluetooth 功能无法从 Singleton 运行

    所以我目前在 iPad 和 iPhone 之间建立了蓝牙连接 我已经在中创建了我的测试代码ViewController一切正常 现在我把它移到了 2 个经理类 第一个是CBCentralManager和一个用于CBPeripheralMan
  • 如何在 iOS 11 上的 Swift 中获取 FLAC 文件元数据?

    我需要获取 FLAC 文件的元数据 我尝试了以下代码 let item AVPlayerItem url URL fileURLWithPath path let commonMetadata item asset commonMetada
  • 如何更改 UILabel/UIFont 的字母间距?

    我已经搜索了很多 但找不到答案 我有一个普通的 UILabel 定义如下 UILabel totalColors UILabel alloc initWithFrame CGRectMake 5 7 120 69 autorelease t

随机推荐

  • 如何将 SSRS 时间格式转换为 HH:MM AM/PM 格式?

    我的任务是增强以下代码以显示不带秒的时间以及 AM PM IIF Fields New Date Value lt gt NO CHANGE FormatDateTime IIF Fields New Date Value NO CHANG
  • Bash 补全:compgen 一个单词列表,就好像它们是路径一样 - 仅建议直到下一个斜杠

    我正在为一个 bash 完成脚本工作点文件管理实用程序 该工具有一个命令dots diff filename 这将显示安装的点文件和源点文件之间的差异 它还有一个命令dots files其中列出了所有托管点文件的路径 相对于源目录 我想用
  • sendmail 错误 452 这一小时收到的收件人太多

    我们正在向我们的 BREW 设备 在 sprint 网络中 发送大量电子邮件 一段时间后 我们的邮件服务器将消息排队并卡住了 当我们尝试刷新它们时 我们会从服务器获得关注 这个问题有解决办法吗 这个错误 452 是来自我们的邮件服务器还是
  • 查找DBUpdateException的原因

    打电话时DbContext SaveChanges 我得到一个 DbUpdateException 未处理的类型异常 System Data Entity Infrastruct DbUpdateException 发生在 实体框架 dll
  • 如何在 Python 中使用 Selenium 创建新的(持久的)Firefox 配置文件?

    尝试使用 Selenium 添加新的 持久的 Firefox 配置文件 AFAIK 执行时FirefoxProfile 使用临时文件生成新的配置文件 理想情况下 该配置文件应该能够对后续进程保持可用 即使创建者关闭后也是如此 Problem
  • 新的 iOS 7.1 mini-ui 视口设置是否存在错误?

    iOS 7 1 中新的 最小 ui 设置非常适合横向网站 我的网络应用程序使用全屏 绝对定位的 div 来显示其内容 以赋予其类似应用程序的感觉 但 Safari 似乎只是在底部添加了 URL 栏的高度 我在不同的 iPhone 上都试过了
  • Slim 3 自动装载机

    我是 slim 框架的新手 不知道如何使用自动加载器来自动加载我的类 我创建了一个app models myclass php但当然 当我尝试使用它时 我发现找不到课程 我不确定哪种是自动加载类的正确方法 或者我应该使用的命名约定 我应该通
  • Spring Boot 2.2.2.RELEASE 中集成测试隔离失败(每次 SpringBootTest 后删除表时出错)

    我们的应用程序正在 2 0 4 版本中运行 升级到 2 2 2 RELEASE 后 我们看到集成测试失败 我怀疑存在一些配置错误 并且每个集成测试本身都不会清理 或者存在以前不存在的额外初始化 我真的不知道如何正确修复它 再具体一点 每个测
  • 如何通过 REST 查询 SQL Server 来获取 XML

    我们一直在使用 Web 应用程序框架来构建需要能够查询 SQL Server 数据库并获取 XML 形式的结果的应用程序 过去 框架提供了这种能力 但该功能现已被弃用 所以我们在想 该框架允许我们轻松地通过 HTTP 查询 REST 服务
  • 禁用 xampp 将 http 重定向到 https

    我在 localhost 中的 xampp 上为 wordpress 创建了 VirtualHost 并在 httpd vhosts conf 中添加了以下代码
  • 在 Linux 上用 python 监听全局组合键

    我刚刚写了一个小程序 每隔几分钟从 flickr 下载一张新壁纸 现在我想添加 喜欢 壁纸的功能 因此它会比不喜欢或不喜欢的壁纸更频繁地出现 我想为此函数分配一个全局键盘快捷键 例如 如果我按 ctrl 7 它将在 Python 中执行某种
  • Tensorflow尝试使用未初始化的值AUC/AUC/auc/false_positives

    我正在训练用于图像分类的 CNN 由于我的数据集大小有限 我正在使用迁移学习 基本上 我使用的是谷歌在其重新训练示例中证明的预训练网络 https www tensorflow org tutorials image retraining
  • Git重置=致命:无法读取树

    有人在错误的分支上提交了所以我尝试将提交移动到另一个分支 当我尝试回滚提交时 出现以下错误 user server gitrepo git reset hard 9c2de3c0 fatal unable to read tree 9c2d
  • 如何在使用 Android API Level 15 的同时保持向后兼容性?

    冰淇淋三明治引入了很多新的UI设计元素 但市场渗透率仍然只有4 左右 如果您想使其应用程序面向未来 并利用 Honeycomb Ice Cream Sandwich 引入的一些设计元素 例如操作栏 配色方案等 那么确保您保持一定程度的落后的
  • Highgui 和 ruby

    我需要编写一个简单的项目 我正在使用 opencv ruby 和 mac 我通过brew安装了opencv 通过gem install安装了rb webcam coding utf 8 require opencv require rb w
  • .htaccess 用于 SEO 机器人在没有 hashbang 的情况下抓取单页应用程序

    Using a pushState启用页面 通常您使用重定向 SEO 机器人escaped fragment习俗 您可以阅读更多相关内容here 该约定假设您将使用 hashbang 前缀位于单页应用程序上所有 URI 之前 SEO 机器人
  • 按 R 中的因素过滤数据框

    我有以下数据框 sp lt combn c sp1 sp2 sp3 sp4 2 d lt data frame t sp freq sample 0 100 6 和两个因素 x1 lt as factor c sp1 sp2 x2 lt a
  • 如何在 C# 中创建包含多种尺寸/图像的图标文件

    如何创建包含多种尺寸的图标文件 我知道我使用位图创建了一个图标Icon FromHandle 但如何向该图标添加另一个图像 尺寸 Edit 我需要在我的应用程序中执行此操作 因此我无法执行外部应用程序来进行组合 我正在寻找一种将 png 文
  • CSS中按属性选择元素

    是否可以通过 HTML5 数据属性来选择 CSS 中的元素 例如 data role 如果你的意思是使用属性选择器 当然 为什么不呢 data role page Styles 有多种属性选择器可用于各种场景 我链接到的文档中均涵盖了这些选
  • 插入约 5000 行时,核心数据 sqlite-wal 文件变得巨大(>7GB)

    我正在将数据导入 Core Data 并发现保存操作很慢 使用 iOS 模拟器 我观察 sqlite wal 文件不断增长 直到其大小超过 7GB 我正在导入大约 5000 条记录 其中包含大约 10 个字段 这并不是很多数据 我插入的每个