【发布时间】:2014-01-25 00:56:27
【问题描述】:
我在 iOS 应用程序中遇到了一个奇怪的 Core Data 问题,有时 WAL 文件会变成 huge (~1GB)。似乎还有其他人遇到了问题(例如Core Data sqlite-wal file gets MASSIVE (>7GB) when inserting ~5000 rows)。
我最初的想法是在应用启动时删除 WAL 文件。从阅读有关此事的 sqlite 文档看来,这会很好。但是有人知道这样做有什么缺点吗?
我当然想了解 WAL 文件为何会变得如此之大的原因,但我现在无法深入了解它,我想在深入研究时提出一种解决方法问题。
值得指出的是,我的 Core Data 数据库更像是一个缓存。因此,如果我丢失 WAL 中的数据也没关系。我真正需要知道的是,如果我删除 WAL,数据库会完全损坏吗?我的怀疑是否定的,否则 WAL 无法达到其目的之一。
【问题讨论】:
-
关于“否则 WAL 不能满足其目的之一”——WAL 的目的不是保护数据库不因删除 WAL 而损坏。如果不再存在,它怎么可能保护任何东西?看我的回答。这就像说您可以从汉明编码数据中删除冗余位,因为这些位的目的是保护数据免受损坏。