核心数据迁移真的很慢,为啥会这样?

Posted

技术标签:

【中文标题】核心数据迁移真的很慢,为啥会这样?【英文标题】:Core Data Migration really Slow, Why does it happen at all?核心数据迁移真的很慢,为什么会这样? 【发布时间】:2009-06-24 15:14:24 【问题描述】:

我正在开发一个桌面 Mac OS X 应用程序,它使用 Core Data 将其非常简单的数据保存到 SQLite 中,以及一个用于 iPhone 的配套移动应用程序,它只需要从桌面应用程序读取数据。虽然当我在移动应用程序上加载 SQLite 数据库时它们共享相同的托管对象模型,但数据需要几秒钟来迁移数据。我真的很想避免这种漫长的等待,因为它似乎与 SQLite 文件的大小呈线性相关。

为什么来自同一个托管对象模型的数据甚至需要迁移?

有人知道避免迁移的方法吗?

【问题讨论】:

你怎么知道它正在迁移?你有对话吗?除非您明确启用它,否则不会发生迁移(请参阅核心数据版本控制和迁移指南)。如果您的模型没有更改,则不需要迁移,因此可能正在发生其他事情。 好问题。我启用它是因为它不会加载商店。我相当肯定它正在迁移,因为我使用 Shark 分析了较长的加载时间。 【参考方案1】:

我发现了导致此问题的原因。虽然这可能很明显,但我会联系起来,所以希望没有其他人会犯这个错误......

我的项目中有两个不同的托管对象模型。拥有多个数据似乎会迫使 Core Data 尝试迁移以找出哪些数据与哪个 MOM 匹配。

作为一种解决方案,我能够手动合并模型,以便可以使用相同的 MOM 表示两个数据源。

【讨论】:

以上是关于核心数据迁移真的很慢,为啥会这样?的主要内容,如果未能解决你的问题,请参考以下文章

跳过核心数据迁移

核心数据迁移:除了少数特定对象之外,是不是可以删除旧存储?

OS X 上的 Core Data 轻量迁移

核心数据迁移是不是必要?

轻量级迁移核心数据

核心数据迁移机制是不是会处理预填充实体上的新数据?