ios - 从 iOS 中的数据库中删除某些行后,Sqlite 文件大小不会减小

标签 ios sqlite

在删除一些行后,我正在以编程方式尝试检查存储在 iphone 上的 SQLite 数据库的大小。记录被删除,但文件大小保持不变。从 iOS 中的 sqlite 中删除记录后,有什么方法可以获得正确的文件大小?请看下面的代码:

NSString* databasePath = [[NSString alloc]
                              initWithString: [self.documentsDirectory stringByAppendingPathComponent: self.databaseFilename]];
unsigned long long fileSize = [[[NSFileManager defaultManager]
                                    attributesOfItemAtPath:databasePath error:nil] fileSize];

谢谢!

我不能使用 vaccum 方法,因为它会删除所有记录。我只删除了 50% 的数据,而不是全部。所以这不是这个问题的重复 change sqlite file size after "DELETE FROM table"

最佳答案

删除记录后,SQLite 数据库文件的大小不一定会缩小。如果未启用 auto_vacuum,它将永远不会收缩,除非您对其执行真空操作。

参见 https://sqlite.org/lang_vacuum.htmlhttps://sqlite.org/pragma.html#pragma_auto_vacuum .

关于ios - 从 iOS 中的数据库中删除某些行后,Sqlite 文件大小不会减小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35787220/

相关文章:

python - scrapy 数据库插入失败但没有错误

sqlite - 在查询中使用时索引为 null 不起作用

sql - 有没有如何优化与 2 内连接到同一个表的查询?

android - 如何在 nativescript 中制作点击阻止覆盖?

ios - tableFooterView 属性中的 UIView 不适合 UITabelView 的 ScrollView

ios - 如何让这个垂直空间更加紧密?

c# - Windows Phone 的复选框

javascript - 数据库中的信息有多本地化?

ios - 从 Storyboard/xib 文件修改 UIImage renderingMode

ios - 删除 View 并加载另一个 View