【发布时间】:2016-03-04 11:16:54
【问题描述】:
我正在以编程方式尝试在删除一些行后检查存储在 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"
【问题讨论】:
-
文件大小不减小是正常的。数据库将根据需要回收空间。如果你想强制它重写一个更小的文件,运行vacuum。
-
Thilo,我只删除了一些记录,而不是所有记录。真空有助于删除所有记录。
-
Vacuum 不会删除任何数据。它只是压缩用于存储它的空间(可能会导致更小的文件)。